Php Facebook应用程序画布页面未加载
当我尝试使用我为Facebook创建的应用程序时,我总是遇到这个错误。当我打开应用程序的url时,它会将我带到登录页面,但当我登录时,会出现一个带有错误的弹出框 应用程序未设置:此应用程序的开发人员尚未设置此应用程序 正确登录Facebook 每次我点击ok,它就会再次重新加载弹出窗口 我已经在我的仪表板中更改了satatus,使其处于状态并进行了查看 当我在facebook上登录我的帐户时,它工作正常,但我想这是因为我在仪表板上被设置为应用程序的管理员 但其他用户也遇到了上述问题 使用的代码:Php Facebook应用程序画布页面未加载,php,facebook,codeigniter,facebook-sdk-3.0,Php,Facebook,Codeigniter,Facebook Sdk 3.0,当我尝试使用我为Facebook创建的应用程序时,我总是遇到这个错误。当我打开应用程序的url时,它会将我带到登录页面,但当我登录时,会出现一个带有错误的弹出框 应用程序未设置:此应用程序的开发人员尚未设置此应用程序 正确登录Facebook 每次我点击ok,它就会再次重新加载弹出窗口 我已经在我的仪表板中更改了satatus,使其处于状态并进行了查看 当我在facebook上登录我的帐户时,它工作正常,但我想这是因为我在仪表板上被设置为应用程序的管理员 但其他用户也遇到了上述问题 使用的代码:
require_once('facebook-php-sdk/src/facebook.php');
$facebook= new Facebook(array(
'appId' => $this->config->item('app_id'),
'secret' => $this->config->item('app_secret'),
'allowSignedRequest' => true,
));
$_REQUEST += $_GET;
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me?fields=picture.width(100).height(100),first_name,last_name,username,email');
} catch (FacebookApiException $e) {
$user = null;
}
} else {
$login_url = $facebook->getLoginUrl(array(
'scope' => 'email'
));
redirect($login_url, 'refresh');
}
这段代码在我的codeigniter应用程序的控制器中,我创建了这个应用程序
我该如何解决这个问题
更新:
在我将应用程序添加为画布应用程序后,这个错误似乎消失了,但是仍然存在一个问题
我添加了Facebook应用程序平台,并输入了画布url、安全画布url等
当我在画布页面转到应用程序时https://apps.facebook.com/MyApp/
-我想我是一名应用程序管理员,所以它工作得很好
但是,当外部用户转到画布页面时,它只是保持空白,但是如果用户转到画布urlhttp://apps.mydomain.com/MyAPP
该应用程序请求他们的权限,作为一个网站可以正常工作
对于画布页面上的用户,它只是保持空白。为什么画布页面不请求许可
请帮忙
编辑:
require_once('facebook-php-sdk/src/facebook.php');
$facebook=新的facebook(数组)(
“appId”=>this->config->item('app_id'),
'secret'=>this->config->item('app_secret'),
“allowSignedRequest”=>为真,
));
$\u请求+=$\u获取;
$user=$facebook->getUser();
如果($user){
试一试{
$user_profile=$facebook->api('/me?fields=picture.width(100)、height(100)、first_name、last_name、username、email');
}捕获(FacebookApiException$e){
$user=null;
}
}否则{
$login\u url=$facebook->getLoginUrl(数组)(
“范围”=>“电子邮件”
));
需要一次(“facebook-php-sdk/src/facebook.php”);
$facebook=新的facebook(数组)(
“appId”=>this->config->item('app_id'),
'secret'=>this->config->item('app_secret'),
“allowSignedRequest”=>为真,
));
$\u请求+=$\u获取;
$user=$facebook->getUser();
如果($user){
试一试{
$user_profile=$facebook->api('/me?fields=picture.width(100)、height(100)、first_name、last_name、username、email');
}捕获(FacebookApiException$e){
$user=null;
}
}否则{
$login\u url=$facebook->getLoginUrl(数组)(
“范围”=>“电子邮件”
));
echo(“top.location.href=”。$login\u url。””;
}
为什么画布页面不请求许可
因为您在iframe内部重定向,但是FB登录对话框不希望显示在(i(frames)中–很明显,这将导致大量网络钓鱼,因为用户应该看到他们输入登录凭据的页面实际上也是真实的FB站点
因此,您必须通过JavaScript在顶部窗口实例中重定向:
top.location.href = '…';
你可以添加你的facebook应用程序吗screenshos@RakeshSharma感谢您查看此内容。请查看问题的更新。非常感谢您的帮助。不确定此代码。请查看我在上面的编辑。这样行吗?我在
href=''
中将其指向哪个url?有点困惑。好的,它现在已加载,但当美国er登录到canvas url而不是facebook canvas pageWell,然后在创建登录url时设置正确的重定向URI…或者使用JS SDK中的FB.login登录客户端(顺便说一句,这看起来更好,因为它只是将一个对话框与登录对话框重叠,并且不重定向)。好的。我会看一下。另外,如果用户已经登录,请求权限的对话框会出现两次?不确定如何显示
top.location.href = '…';