我已经为此苦苦挣扎了几个小时,没有解决方案。
我有两个应用程序,两个应用程序都处于沙盒模式,设置相同,除了类别(进入那个),包括高级设置,从同一台服务器提供,使用相同的 PHP SDK 版本,甚至使用相同的登录脚本。
问题是,两个应用程序的身份验证对话框不同。其中一个是完整的增强对话框(Flops),另一个(Dummy App)只是在不同的屏幕和一个没有任何应用程序信息的小框中请求读取和写入权限。
现在,关于类别。第一个应用程序(虚拟应用程序)是新闻风格的应用程序,因此类别设置为新闻,第二个是游戏。当我为虚拟应用程序选择游戏时,对话框会按照我的意愿出现,就像第二个(翻牌)一样。但这不是解决方案,不能接受。
有人有解决这个疯狂问题的方法吗?这些我试过但没有成功:
- 我已将应用程序更改为沙盒和实时应用程序。
- 完全更改请求代码。
- 更改权限,使两个变得相同。
- 为请求添加 canvas => 1 以及 getLoginUrl 可以具有的任何其他设置
这是第一个应用程序的屏幕截图
第二个是这样的(我想在第一个应用程序中看到的那个)
如果可以通过代码实现,那么当前两个app中的代码都是这样的:
// Load Facebook sdk
include_once ROOT . "/facebooksdk/facebook.php";
$config = array (
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_APP_SECRET,
'fileUpload' => true
);
$facebook = new Facebook($config);
// Request Facebook user
$facebookid = $facebook->getUser();
// Facebook returned signed request
if ( isset($_POST["signed_request"]) ) {
// $request = sanitize_string($_POST["signed_request"]);
// $signedRequest = parse_signed_request($request, FACEBOOK_APP_SECRET);
}
// User is missing, send user to permissions page
if ( !$facebookid ) {
$url = $facebook->getLoginUrl(array ( 'scope' => FACEBOOK_APP_PERMISSIONS ));
echo "<html><script>top.location.href='{$url}'</script><body>1</body></html>";
exit();
}