4

我正在尝试使用应用中心推广我的应用,但从 Web 预览中我无法访问该网站。被调用的链接是http://www.myappsite.it/?fb_source=appcenter&fb_appcenter=1&code=a_long_string

从 myappsite 的 index.php 中,我使用这种和平的 php 代码来获取来自 facebook 的用户

$code = $_REQUEST["code"];

if($_REQUEST['state'] == $_SESSION['state'] && !$user && strlen($code) > 0) 
{
$token_url = "https://graph.facebook.com/oauth/access_token?" . 
"client_id=" . $appId . "&redirect_uri=" . urlencode("http://www.myappsite.it/") . 
"&client_secret=" . $secret . "&code=" . $code;

$response = @file_get_contents($token_url);
$params = null;

parse_str($response, $params);

$graph_url = "https://graph.facebook.com/me?access_token=" .     $params['access_token'];

$user = json_decode(file_get_contents($graph_url));
echo("Hello " . $user->name);
}

但 $params['access_token'] 是空的,因为 $token_url 返回

{
"error": {
    "message": "Error validating verification code.",
    "type": "OAuthException",
    "code": 100
    }
}

如何让用户从应用中心预览网页登录?

4

2 回答 2

6

来自文档的Authenticated Referrals部分(应用中心算作经过身份验证的推荐)

请参阅使用查询字符串设置时的特殊注意事项:

如果您想使用服务器端身份验证流程,请务必确保在将代码交换为访问令牌时正确传递了 redirect_uri 参数。您应该将 redirect_uri 参数设置为您的网站的点击后到达 URL,而不使用 code 参数。在大多数情况下,URL 看起来像:

http://www.example.com/?fb_source=search&code=CODE_HERE剥离代码参数后,它将变为:

http://www.example.com/?fb_source=search应该在 redirect_uri 中设置的值。请确保此逻辑是动态的,因为附加到您的点击后到达网址的查询参数可能会发生变化。

使用上面的示例,这意味着您的redirect_uri参数应该是http://www.myappsite.it/?fb_source=appcenter&fb_appcenter=1

于 2012-06-15T15:28:35.893 回答
0

正如伊吉所说:

http://www.example.com/?fb_source=search&code=CODE_HERE剥离代码参数后,它将变为:

http://www.example.com/?fb_source=search

但是,如果您使用此 url 进行重定向,则需要对 url 进行编码,否则 ? 将停止重定向参数并将 fb_source 添加到您的请求中。

发出时应该是这样的:

http%3a%2f%2fwww.example.com%2f%3ffb_source%3dappcenter%26fb_appcenter%3d1

(这就是 Marco 已经做过的事情,这就是为什么他现在很高兴它起作用了)

urlencode("http://www.myappsite.it/")
于 2013-05-11T15:24:32.090 回答