如何在一个用户上访问多个API(Facebook和Twitter)?

时间:2012-09-12 10:18:32

标签: php facebook oauth twitter-oauth facebook-oauth

我一直在阅读有关某人网站的Facebook和Twitter登录信息。 使用这些服务之一的集成是可以的,但我的问题是如何为一个用户访问两个API。

示例:

用户已登录我的网站(活动会话)。现在他不得不让我在facebook和twitter上访问他的用户详细信息等。我怎么意识到这一点?我不希望他/她每次登录时都输入他的facebook或twitter凭证来获取他的访问令牌(oAuth)。 在使用我的网站登录后,如何获得自己的oAuth用户访问令牌,以便我可以与Facebook和Twitter的API进行交互。

这是对的吗? Receive oAuth Token from my website

非常感谢,如果你能帮助我的话。

2 个答案:

答案 0 :(得分:0)

当有人登录Facebook帐户时,他们会一直登录,直到他们主动退出。

测试方法是:

FB.getLoginStatus(function(response){
    if response.status === 'connected'{
        // The user is logged in
        var access_token = response.authResponse.accessToken;
        // Do whatever you need to do
    } else {
        // Get the user to log in
    }
});

请点击此处了解更多详情: https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

微博

Twitter的过程稍微复杂一些,但如果您只想显示推文,请考虑Web Intents

否则,请按照下列步骤操作: https://dev.twitter.com/docs/auth/3-legged-authorization

两个平台都能够检查用户是否首先登录,因此您不必担心每次使用您的网站时都必须登录。但是,您不能在两个站点上使用相同的oAuth令牌 - 您必须为每个站点单独使用一个。

答案 1 :(得分:0)

每个单独的API都需要一个弹出窗口进行身份验证,它将重定向到适当的api进行授权,然后在授权重定向回弹出窗口后获得令牌。

然后,您将获得一个令牌,您可以将其传递回调用页面“window.opener”,并通过在主页上添加Javascript函数将该API的令牌存储在Javascript变量中。

window.opener.getInstagramData("self", oauth_token);

每个身份验证都需要有自己的令牌,并且需要是用户应该单击的按钮。

我正在使用此方法获取Facebook,Twitter,LinkedIn Foursquare和GooglePlus帐户信息。

希望这有帮助。