我通过Facebook开发者文档
中发布的简单示例连接到Facebook API$code = $_GET["code"];
if(empty($code)) {
// Really long scope, but I've tested it, and there aren't any errors here.
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id .
"&redirect_uri=" . urlencode($my_url) .
'&scope=email,read_stream,publish_stream,read_mailbox,read_requests,create_event,
manage_pages,publish_checkins,manage_friendlists,read_friendlists,user_about_me,
user_activities,user_birthday,user_checkins,user_education_history,user_events,
user_hometown,user_interests,user_likes,user_location,user_photo_video_tags,
user_photos,user_relationship_details,user_relationships,user_religion_politics,
user_status,user_videos,user_website,user_work_history';
echo "<script> window.location.href='" . $dialog_url . "'</script>";
}
然后我使用回调来获取访问令牌并运行检查以查看用户是否已经在我的数据库中。但是,我注意到如果我登录到另一个Facebook帐户并使用我的数据库中存储的登录来登录用户,当它进行身份验证时,它是针对当前登录的Facebook用户。
我的问题是:有没有办法改变上述身份验证代码,以使用存储在我的数据库中的Facebook用户ID,并专门对该用户进行身份验证。
例如,如果具有活动Facebook会话的用户不是登录我网站的用户,则会结束当前会话(退出Facebook)并请求用户登录Facebook。
答案 0 :(得分:0)
在Facebook api中,在线和离线验证用户有两种方法。当您使用一个用户登录到Facebook并且想要访问另一个用户时,实际上您正在以脱机模式访问其他用户。为此,您需要离线访问权限。 获得此权限后,您可以按照此问题中的步骤操作: Facebook offline access step-by-step
附注:根据我的经验,人们真的不喜欢给予offline_access权限。如果您确实需要它,请仅询问此问题,并了解这可能会限制将使用该应用程序的用户数量。只是我的两分钱。