我在移动设备上使用 Facebook SDK 时遇到问题,我希望这里有人可以为我提供帮助。
我有 js sdk 做一个 FB.getLoginStatus ,response.status == 'connected'
然后打开一个弹出 iframe。弹出的 iframe 使用 PHP sdk 来做$facebook->getUser()
,每次都返回 0,即使重定向到$facebook->getLoginUrl()
. 令人惊讶的是,当重定向到 PHP 时$loginUrl
,没有登录对话框,它只是返回到提供的 redirect_uri,但$facebook->getUser()
仍然是 0,当我尝试$facebook->api('/me')
捕获异常时,它说必须是一个活动访问令牌用于查询当前用户的信息。
我试过了$facebook->getAccessToken()
,还是不行。我还尝试将 JS SDK 发布response.authResponse.accessToken
回 PHP 并将其放入$facebook->setAccessToken()
中,这也不起作用。这到底是怎么回事?我在桌面浏览器上没有这样的问题,它只在移动设备上..
为了澄清,这是我用来测试的脚本:
<?php
require_once(__DIR__ . '/../facebook-sdk-3.2.2/facebook.php');
$facebook = new Facebook(array(
'appId' => '[private]',
'secret' => '[private]',
'cookie' => true
));
$redirectUri = 'https://www.[private].com/ios-test.php';
$loginUrl = $facebook->getLoginURL(array(
'scope' => 'publish_stream,publish_actions,email',
'redirect_uri' => $redirectUri
));
echo '<a href="'.$loginUrl.'" target="_top">'.$loginUrl.'</a><br />';
var_dump($facebook->getUser());
exit(__FILE__.__LINE__);
但是,在 iPhone 的 Facebook 应用程序上进行测试时,用户 ID 为 0,当单击 时$loginUrl
,我没有看到身份验证对话框,但我被带回到用户 ID 保持为 0 的同一页面。Android 本机浏览器上也会发生同样的情况. 在 iPhone 上使用 Chrome 时,会显示正确的 Facebook 用户 ID。
我真的需要帮助,我花了四个多小时把头撞在墙上并搜索互联网,没有任何帮助。有人建议我试试 Stack Overflow,我希望他们是对的!