【发布时间】:2012-11-12 18:03:36
【问题描述】:
我目前正在使用 php sdk 和 js sdk 开发一个 facebook 应用程序。 (两个都需要)
当用户尚未授权应用程序并加载画布页面 (https://apps.facebook.com/app_name/) 时,什么都没有发生,他只是得到一个顶部有 facebook 栏的空白页面。 但是,如果他加载应用程序的直接 url (https://my_app.mydomain.com),它工作正常,他被重定向到 OAuth 对话框。如果他授权该应用程序,则他会被重定向到https://apps.facebook.com/app_name/,并且 iframe 会正确加载。
如果用户已经授权应用程序,则两个链接都可以正常工作(https://apps.facebook.com/app_name/ 和 https://my_app.mydomain.com)。
这是我的验证码:
<?php
require 'php-sdk/facebook.php';
$facebook = new Facebook(array(
'appId' => '327991330620101',
'secret' => '79asecretcc4300',
'cookie' => true
));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
$user = null;
}
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$params = array(
'scope' => 'publish_stream',
'redirect_uri' => 'https://apps.facebook.com/quiet_quies/'
);
$loginUrl = $facebook->getLoginUrl($params);
header('Location: ' . $loginUrl);
}
有人对此有想法吗?真的快把我逼疯了... 谢谢你的帮助。
【问题讨论】:
-
您不能将身份验证对话框加载到任何类型的 (i) 框架中。使用 JavaScript 打破它进行登录(带有
top.location.href = {login_url}的脚本元素),或者使用 JS SDK 代替使用客户端登录。 -
但是如果用户没有授权应用,我的页面根本就加载不出来,所以我不能放任何js进去...
-
当然你的应用程序无论如何都会被加载——但这取决于你在这种情况下做什么,如果事情进展顺利。如果您仍在使用脚本中显示的标题,那么只有带有 FB 徽标的页面才会加载到框架中。
标签: facebook iframe canvas oauth