gpt4 book ai didi

facebook - 如何在 Canvas 中使用重定向授权 Facebook 应用程序?

转载 作者:行者123 更新时间:2023-11-30 05:21:03 24 4
gpt4 key购买 nike

我正在尝试制作 Facebook 应用程序,但我无法在 Canvas 内的重定向方案中获得授权。

使用 javascript api,我可以很容易地在弹出式方案中使用它:

$("#loginButton").click(function(e) {
FB.login(function(response) {
if (response.perms) {
perms();
}
}, {perms : 'publish_stream'});

但是弹出窗口应该是不必要的额外点击,因为我看到的每个其他应用程序甚至在向您显示登录页面之前都会请求授权。像这样:

http://i.imgur.com/yBGzL.png

我认为他们只是在使用重定向方案。所以我花了一整天的时间尝试我能找到的不同方法:

header("Location: https://graph.facebook.com/oauth/authorize?client_id=" . $gAppId . "&redirect_uri=" . urlencode($gUrl) . "&perms=publish_stream");

header("Location: http://www.facebook.com/login.php?v=1.0&api_key=" . $gApiKey . "&next=" . urlencode($gUrl) . "&canvas=");

header("Location: http://www.facebook.com/connect/uiserver.php?app_id=" . $gAppId . "&next=" . urlencode($gUrl) . "&return_session=0&fbconnect=0&canvas=1&legacy_return=1&method=permissions.request");

但是所有这些,都没有显示授权请求内容,而是显示如下链接:

http://i.imgur.com/bLwPQ.png

有趣的是,如果我在新选项卡中打开 iframe 的地址,我会得到我想要的授权请求。但我希望它立即显示,无需额外点击,就像其他所有应用一样。

这是一个应用程序的示例,它甚至在显示登录页面之前以重定向形式一次完成授权和请求权限:

www.facebook.com/send.fortune.cookies

他们是怎么做到的?

最佳答案

我知道这已经有几个月了...但这是您应该为 Canvas 添加权限检查的方法。

if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
$accesstoken=$session['access_token'];
} catch (FacebookApiException $e) {
error_log($e);
}
}

if($me)
{
// do what you have to do
}else {
$loginUrl = $facebook->getLoginUrl(
array(
'canvas' => 1,
'fbconnect' => 0,
'req_perms' => 'publish_stream'
)
);
echo '<script>top.location="'.$loginUrl.'";</script>';
//echo '<fb:redirect url="' . $loginUrl . '" />';
//header('Location: '.$loginUrl);
}

关于facebook - 如何在 Canvas 中使用重定向授权 Facebook 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3380876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com