Thi*_*yen 2 php facebook facebook-graph-api
问题与标题相同.我正在使用最新的php-sdk(v3.1.1)来运行服务器端身份验证流程.
我在Chrome中有2个标签,一个是我的Facebook页面,另一个是php测试页面.这两个问题多次发生:
$facebook->getUser() 即使我登录时仍然返回0.$facebook->getUser() 即使我退出也会返回ID.我必须解决这个问题:尝试使用提供的access_token启动图形API请求,并检查是否$response->error->type == "OAuthException"确保存在活动会话.
有没有办法$facebook->getUser()"稳定" 使用?我通过SO搜索了很多,但还没找到php-sdk 3.1.1的最佳答案.
非常感谢任何帮助.谢谢.
登录.
由于每个FB SDK的文档例如,getUser()返回用户id甚至当你注销,但有FB账户相关联的cookie.要检测用户是否已登录,您应该使用
$user = $facebook->getUser();
//Check Access token
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
$user = null;
}
}
if ($user) {
//logged-in
} else {
//not logged-in
}
Run Code Online (Sandbox Code Playgroud)
要登录您的应用程序,请通过关注此网址(请确保您根据应用程序执行的预期操作传递范围),让用户登录您的应用程序而不是相邻选项卡:
$loginUrl = $facebook->getLoginUrl(
'scope' => ...
);
Run Code Online (Sandbox Code Playgroud)登出.似乎您的PHP服务器正在为每个会话存储一些访问权限值,因此即使您在浏览器中注销,您的服务器仍然可以使这些令牌有效.实际上,我不知道,它是错误还是功能,但在用户注销后它们不会被Facebook销毁.
要破坏这些令牌我正在使用这些:
$facebook->destroySession();
Run Code Online (Sandbox Code Playgroud)
我每次用户注销时都会调用它$facebook->getLogoutUrl();