$facebook->;Facebook页面iframe应用程序/选项卡中的getSession()仅在应用程序管理员登录时起作用
我正在为Facebook商业页面开发一些定制iframe/canvas页面(或者现在称为“应用程序”)。出于我的目的,我想提取当前登录(并且当前喜欢该页面)的用户的名字和姓氏,并将其输出到页面上。当我以应用程序管理员身份登录时,该脚本工作正常,但当我尝试以我的个人帐户或我的几个朋友帐户登录时,$session似乎为空。为什么会发生这种情况?如何在不让用户进行任何附加身份验证的情况下获取名字和姓氏$facebook->;Facebook页面iframe应用程序/选项卡中的getSession()仅在应用程序管理员登录时起作用,facebook,facebook-graph-api,facebook-page,Facebook,Facebook Graph Api,Facebook Page,我正在为Facebook商业页面开发一些定制iframe/canvas页面(或者现在称为“应用程序”)。出于我的目的,我想提取当前登录(并且当前喜欢该页面)的用户的名字和姓氏,并将其输出到页面上。当我以应用程序管理员身份登录时,该脚本工作正常,但当我尝试以我的个人帐户或我的几个朋友帐户登录时,$session似乎为空。为什么会发生这种情况?如何在不让用户进行任何附加身份验证的情况下获取名字和姓氏 <?php require_once '../db/connect.php'; require
<?php
require_once '../db/connect.php';
require_once '../../lib/facebook.php';
$signed_request = $_REQUEST["signed_request"];
$secret = "***********************************";
$facebook = new Facebook(array(
'appId' => '**************',
'secret' => $secret,
'cookie' => true
));
$session = $facebook->getSession();
$me = null;
// Session based API call.
if ($session) {
echo "\$session is not null!";
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
echo $me['name'];
?>
不幸的是,这是不可能的(): 与画布页面一样,您不会 接收所有用户信息 可在中访问您的应用程序
签名请求
直到用户
授权你的应用程序
因此,您需要用户首先授权您的应用程序,可以找到:
你知道我如何在不将用户重定向到其他页面的情况下做到这一点吗?也许是一个js弹出窗口?@YevgeniyVanChuchin:当然,请查看
<?php
$app_id = YOUR_APP_ID;
$canvas_page = YOUR_CANVAS_PAGE_URL;
$auth_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($canvas_page);
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["user_id"])) {
echo("<script> top.location.href='" . $auth_url . "'</script>");
} else {
echo ("Welcome User: " . $data["user_id"]);
}
?>