当用户访问我的网站时,我曾经打开一个新窗口来验证用户身份并通过我的应用程序请求权限(将其称为UseCase1)。但是,当用户已经登录时,我试图通过PHP SDK获取登录的用户信息,这样我就不需要打开一个新窗口并检查相同的内容(您将避免打开一个新的窗口,该窗口在关闭后关闭因为用户已经登录了)。但getUser()方法不会返回任何内容。当我通过UseCase1(打开一个自动关闭的新窗口)时,同样的方法工作正常。 以下是我尝试使用的代码:
$facebook = new Facebook(array(
'appId' => $appId,
'secret' => $appSecret,
'oauth' => true
));
$me = $facebook->getUser();
if ($me) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
//code to redirect to login url
// USECASE1
// use $facebook->getUser() one USECASE1 is over
// now the user info is generated properly
}
}
用户通过USECASE1的所有时间(但由于用户已登录并且已经对应用程序进行了身份验证,因此窗口处于空白状态),即使他已经登录并且之前已经对该应用程序进行了身份验证。
知道为什么会发生这种情况
答案 0 :(得分:0)
在你的代码中,如果用户进入'USECASE1',那么它会显示'$ me'正在设置,因为它正在进入你的try / catch。
使用$me = $facebook->getUser();
不是测试用户是否已接受您的应用程序的权限。
我怀疑抛出'FacebookApiException'异常的原因是因为你还没有获得用户权限。
我建议阅读身份验证流程和示例PHP SDK身份验证流程,请参阅以下链接:
http://developers.facebook.com/docs/reference/php/facebook-api/