我正在将Facebook和Twitter身份验证整合到我的新网站中。
当用户使用facebook或twitter进行身份验证时,我会获取AccessToken并将其存储在数据库中并将其链接到登录用户的UserID(用户应将其facebook或Twitter帐户链接到其现有帐户或新帐户)在我的网站上)
现在下一次,他进行身份验证,我得到了AccessToken,如果这个accessstoken链接到任何用户,请检查数据库,如果有,我直接登录他。
现在在twitter中,我总是得到相同的accessstoken,但在facebook(称为SessionKey)中,它不是固定的,而是包含UserID。
问题是我如何将用户Facebook帐户链接到我网站上的帐户?我应该使用他的Facebook ID并将其链接到我的网站UserID吗?
感谢。
答案 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));