0
<script>
  function postToWall() {
    var params = {};
    params['message'] = 'hello visit lol';
    params['name'] = 'cazzo frega';
    params['link'] = 'http://apps.facebook.com/xxxxxxxxxxxxxxxx/';
    params['picture'] = 'http://2.gravatar.com/avatar/7da5bead8xxxxxxxxxxxxxx75bac';
    params['description'] = 'test di frase';

    FB.api('/me/feed', 'post', params, function(response) {
      if (!response || response.error) {
        alert('lol');
      } else {
        alert('ok');
      }
    });
  }
</script>

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({ 
    appId:xxxxxxxxxxxxxxx, cookie:true, 
    status:true, xfbml:true
  });
</script>
<a href="javascript:postToWall()">click</a>

在 facebook 的墙上发布一条消息,但不会显示框对话框。但是,如果我想自动获得它,无需点击?我试过 whit body onload="javascript:fucntion(); 但得到一个错误......你知道吗?

4

4 回答 4

3

如果他已授权您的 Facebook 开发者应用在他的墙上发布,您可以发布到任何用户的墙上。

用户在登录您的应用程序时可以授予访问权限(范围:Publish_stream)。您必须在此处指定权限。示例代码如下。

<div id="fb-root"></div>

<script type="text/javascript>
var appid = $('#FB_appId').val();
var appsecret = $('#FB_secretkey').val();
        window.fbAsyncInit = function () {
            FB.init({
                appId: appid, // App ID
                status: true, // check login status
                cookie: true, // enable cookies to allow the server to access the session
                xfbml: true  // parse XFBML
            });


        };

        // Load the SDK Asynchronously
        (function (d) {
            var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
            if (d.getElementById(id)) { return; }
            js = d.createElement('script'); js.id = id; js.async = true;
            js.src = "//connect.facebook.net/en_US/all.js";
            ref.parentNode.insertBefore(js, ref);
        } (document));



                    FB.login(function (response) {
                        if (response.authResponse) {
                            alert(response.authResponse.userID);


                        } else {

                            console.log('User cancelled authorization');
                        }
                    }, { scope: 'publish_stream' });


</script>

在这里您可以获取登录用户的 userId。

然后您必须通过传递 applicationId 和 applicationsecretkey 来获取 AppLication 访问令牌,如下所示:

string accesstoken = new System.Net.WebClient().DownloadString("https://graph.facebook.com/oauth/access_token?client_id= fbappId &client_secret= fbsecretkey &grant_type=client_credentials");

现在你有四个参数

  • 用户身份
  • 访问令牌
  • 应用 ID
  • 应用秘密

使用这些参数,您可以按如下方式发布到他的墙上:

        $.ajax({
                type: 'POST',
                url: 'https://graph.facebook.com/' + fb_userid + '/feed?method=post',
                data: {
                    access_token: fb_accesstoken,
                    message: 'Hello world! My first post'
                },
                success: function (data) {

                   alert(data.Id);
                },
                error: function (data) {

                    alert('Failed to post  to facebook');
                },
                dataType: "jsonp"
            });

成功函数返回 Facebook 帖子 ID。

于 2013-03-21T14:20:45.487 回答
0

我猜想通过 javascript 使用 FB.ui() 事件时仍然会有弹出对话框。您可以尝试通过 PHP 的图形 API 发布内容。首先获得 stream_publish 权限并使用它来执行 AJAX 调用。

你可以看看这个例子:http ://www.facebook.com/pages/Helper-Component-Community/222933037808340?sk=app_412923142052609

于 2012-05-03T18:42:04.653 回答
0

你需要确保你请求“stream_publish”权限,如果你有它,你可以使用上面的代码自动发布。未经许可,它会弹出蓝色对话框。

于 2012-05-03T17:48:43.830 回答
0

你需要把

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>

在上面 :).....................

于 2013-02-19T07:57:17.080 回答