正如标题所说我有一个奇怪的问题。当我单击索引页面上的另一个链接时,它会再次重定向到索引。我在两个页面上都写了相同的权限代码。
这是我的代码:
<?php
$code = $_REQUEST["code"];
if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=email,publish_stream,offline_access";
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret="
. $app_secret . "&code=" . $code . "&scope=email,publish_stream,offline_access";
$access_token = file_get_contents($token_url);
$graph_url = "https://graph.facebook.com/me?" . $access_token;
$user = json_decode(file_get_contents($graph_url));
?>
我正在编写此代码所有我在索引上链接的页面。
我的代码是错误的,有服务器问题还是别的?
答案 0 :(得分:0)
索引页面上链接中的URL是否包含code
变量。如果未在URL的查询字符串部分中显式声明,则会触发Oauth对话框,如果已安装该应用程序,则该用户将被重定向到$my_url
。
另外,从您的代码判断,您可以使用现有的Facebook PHP SDK。这是一个代码片段,它使用包含上面列出的行为的当前(v3.0.0)SDK:
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
));
$fb_user_id = $facebook->getUser();
if ($fb_user_id) {
try {
$user = $facebook->api('/me');
} catch (FacebookApiException $e) {
$fb_user_id = null;
$params = array(
'redirect_uri' => $my_url,
'scope' => 'email,publish_stream,offline_access' );
$dialog_url = $facebook->getLoginUrl($params);
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
}