Facebook和Twitter Connect:存储用户访问权限

时间:2010-08-29 12:28:09

标签: facebook

我正在将Facebook和Twitter身份验证整合到我的新网站中。

当用户使用facebook或twitter进行身份验证时,我会获取AccessToken并将其存储在数据库中并将其链接到登录用户的UserID(用户应将其facebook或Twitter帐户链接到其现有帐户或新帐户)在我的网站上)

现在下一次,他进行身份验证,我得到了AccessToken,如果这个accessstoken链接到任何用户,请检查数据库,如果有,我直接登录他。

现在在twitter中,我总是得到相同的accessstoken,但在facebook(称为SessionKey)中,它不是固定的,而是包含UserID。

问题是我如何将用户Facebook帐户链接到我网站上的帐户?我应该使用他的Facebook ID并将其链接到我的网站UserID吗?

感谢。

2 个答案:

答案 0 :(得分:2)

您应该使用Facebook用户ID。它对每个用户都是唯一的,永远不会改变。对于Twitter来说也是如此。如果您需要访问twitter api,可以保留访问令牌,但使用Twitter用户ID链接到您网站的帐户。访问令牌可以更改,即使您获得具有offline_access权限的访问令牌,也可以由用户撤消。

答案 1 :(得分:0)

您必须在授权过程中请求offline_access扩展权限。

例如:

https://graph.facebook.com/oauth/authorize?client_id=<CLIENT ID>&redirect_uri=<YOUR CALL BACK URL>&scope=user_photos,user_videos,publish_stream,read_stream,offline_access

http://developers.facebook.com/docs/authentication/#exchange_session

一旦用户授权您的应用,您将获得用户的非过期access_token,然后可以存储和重复使用。

假设您正在使用PHP,使用php-sdk和access_token进行API调用看起来就像;

$uid = $myDB_StoredUserID;
$access_token = $myDB_StoredToken;
$facebook->api($uid.'/feed', 'get', array('access_token' => $access_token));