【问题标题】:set user (access token) within FB.init在 FB.init 中设置用户(访问令牌)
【发布时间】:2012-07-18 14:32:48
【问题描述】:

我想将故事发布到用户时间线,即使他们没有使用 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
        });
    };

及以后:

FB.api('/me/...

将登录账号设为“我”,而不是我通过setAccessToken在php中设置的账号。 我如何发布到该帐户(使用 token_from_database 指定)的时间线?有什么想法吗?

【问题讨论】:

    标签: facebook facebook-opengraph facebook-access-token facebook-javascript-sdk


    【解决方案1】:

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

    FB.api(
      '/me/feed',
      'post',
      {
        access_token : 'access_token_for_some_user_fetched_from_your_database',
        additional_parameter_foo : 'bar'
      }
    );
    

    【讨论】:

    • 对于所有为此而来的人,在参数中传递 access_token 是可行的!谢谢马里奥和 CBroe!
    【解决方案2】:

    我对 PHP SDK 有更多了解,但在 PHP 中,您可以将“我”替换为用户 ID,我想它也适用于您:

    FB.api('/'+fbuserid+'/...');
    

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

    【讨论】:

    • /me 替换为/userid 只会更改该API 调用的“接收者”,但不会更改使用的访问令牌。
    • 但这就是他想做的事吗?他想发布到由用户 ID 给出的某个时间线,但由他拥有访问令牌的用户发布 - 这就是我理解问题的方式。马里奥写道:“我怎样才能发布到该帐户(使用 token_from_database 指定)的时间线?”据我了解,他只想更改接收器……而不是一个帖子。好吧,我猜马里奥会解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 2019-12-16
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多