在FB.init中设置用户(访问令牌)

Mar*_*rio 6 facebook opengraph facebook-javascript-sdk facebook-access-token

我想将故事发布到用户时间线,即使他们没有登录Facebook.实际上我在数据库中存储了用户访问令牌,如果用户使用电子邮件登录,我将为她检索访问令牌.它在php中运行良好(例如,在setAccessToken(token_from_database)之后获取好友列表,但是当我发布故事时,它总是发布到当前fb登录帐户的时间轴.

我认为问题是由fb.init引起的:

window.fbAsyncInit = function() {
        FB.init({
            appId      : 'XXX', // App ID
            status     : true, // check login status
            cookie     : true // enable cookies to allow the server to access the session
            xfbml      : true  // parse XFBML
        });
    };
Run Code Online (Sandbox Code Playgroud)

然后:

FB.api('/me/...
Run Code Online (Sandbox Code Playgroud)

将登录帐户设为"我",而不是我通过setAcccessToken在php中设置的帐号.我如何发布到该帐户(使用token_from_database指定)的时间表?任何的想法?

CBr*_*roe 20

尝试传递您要用作params对象的一部分的访问令牌FB.api- 它应该与访问API服务器端时的工作方式相同.

FB.api(
  '/me/feed',
  'post',
  {
    access_token : 'access_token_for_some_user_fetched_from_your_database',
    additional_parameter_foo : 'bar'
  }
);
Run Code Online (Sandbox Code Playgroud)

  • 对于所有来这里的人来说,在参数中传递access_token是有效的!谢谢马里奥和CBroe! (3认同)

Sam*_*ami 0

我对 PHP SDK 有更多的了解,但在 PHP 中,您只需将“me”替换为用户 ID,我想它也适合您:

FB.api('/'+fbuserid+'/...');
Run Code Online (Sandbox Code Playgroud)

但您应该注意,在更改密码以及登录和退出 Facebook 后,用户的访问令牌会发生变化。