我正在尝试使用 PHP 开发 Facebook 应用程序 (apps.facebook.com/some_app),我需要根据用户的音乐兴趣提供一些信息.我发现它在user_likes > games"下.
我的问题如下:
$auth_url = "http://www.facebook.com/dialog/oauth?client_id=".$app_id ."&redirect_uri=".urlencode($canvas_page)."&scope=user_likes";http://MY_CANVAS_PAGE/?code=一些 base64 编码的字母if(empty($code) && !isset($_REQUEST['error'])) {$_SESSION['state'] = md5(uniqid(rand(), TRUE));//CSRF保护echo("<script> top.location.href='" . $auth_url . "'</script>");}$signed_request = $_REQUEST["signed_request"];列表($encoded_sig, $payload) = expand('.', $signed_request, 2);$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);echo ("欢迎用户:" . $data["user_id"]);还尝试了在http://developers.facebook.com/blog/post/500/>
但是在尝试使用
print_r($decoded_response);<小时>
stdClass Object ( [error] => stdClass Object ( [message] => 一个活动必须使用访问令牌来查询有关当前用户的信息.[类型] =>OAuthException [代码] =>2500 ) )为了获取用户的公开信息,我也尝试了 PHP SDK 中的建议示例
<小时>$facebook = new Facebook(array('appId' =>MY_APP_ID,//注册的facebook APP ID'秘密' =>MY_SECRET,//APP的秘钥));$fb_user = $facebook->getUser();如果($ fb_user){尝试 {$user_profile = $facebook->api('/me');回声 $user_profile['email'];}抓住(FacebookApiException $e){$fb_user = null;}}但没有成功.有人可以解释我为什么会收到此错误以及如何正确访问用户的音乐兴趣.可能我误解了 API.
谢谢
Deepak
Error 2500 表示您没有访问令牌或应用程序访问令牌但正在尝试访问 /me/ - 'me' 是当前用户或页面 ID"的占位符,因此在没有用户或页面的访问令牌的情况下无效.
要访问用户的喜欢列表,您还需要 user_likes 权限 授权他们
我见过的应用程序无法将 code 交换为访问令牌的最可能原因是:
redirect_uri 指向文件夹或服务器根目录,并且缺少尾部斜杠(即它是 http://www.example.com 而不是 http://www.example.com/)redirect_uri 与您在调用中用于交换 access_token 代码的 redirect_uri 并不完全相同如果您的身份验证流程因其他原因而中断,并且您无法从 SDK 示例或 身份验证 文档,这可能需要一段时间才能让某人与您交谈,因为您可能缺少理解他们的答案所必需的一些背景知识
I am trying to develop an Facebook application (apps.facebook.com/some_app) using PHP where I need to present some information based on user's music interests. I found that its under "user_likes > games".
My problems are as follows:
$auth_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri="
. urlencode($canvas_page)
."&scope=user_likes";
http://MY_CANVAS_PAGE/?code=some base64 encoded letters
if(empty($code) && !isset($_REQUEST['error'])) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
echo("<script> top.location.href='" . $auth_url . "'</script>");
}
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
echo ("Welcome User: " . $data["user_id"]);
Also tried the code found in http://developers.facebook.com/blog/post/500/
but I am getting error when trying to get the debug info using
print_r($decoded_response);
stdClass Object ( [error] => stdClass Object ( [message] => An active
access token must be used to query information about the current user.
[type] => OAuthException [code] => 2500 ) )
To get user's public info, I have tried also the suggested example in PHP SDK
$facebook = new Facebook(array(
'appId' => MY_APP_ID, //registered facebook APP ID
'secret' => MY_SECRET, //secret key for APP
));
$fb_user = $facebook->getUser();
if($fb_user){
try {
$user_profile = $facebook->api('/me');
echo $user_profile['email'];
}
catch(FacebookApiException $e) {
$fb_user = null;
}
}
But no success. Can somebody explain me why I am getting this error and how to access the user's music interest properly. Probably I misunderstood the API.
Thanks
Deepak
Error 2500 means you have no access token or an app access token but are trying to access /me/ - 'me' is a placeholder for 'current user or page ID' so won't be valid without an access token for a user or page.
To access the user's list of likes you'll also need the user_likes Permission when authorising them
The most likely causes i've seen for apps not being able to exchange the code for an access token are:
redirect_uri you used is to a folder or server root and is missing a trailing slash (i.e it's http://www.example.com instead of http://www.example.com/)redirect_uri you used in the first call to the auth dialog wasn't precisely the same as the redirect_uri you used in the call to exchagne the code for an access_tokenIf your auth flow is broken for some other reason and you can't figure it out from the SDK examples or the Authentication documentation, this could take a while for someone to talk you through because you may be missing some background knowledge necessary to understand their answers
这篇关于需要有关 OAuthException 代码 2500 的帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
在 SELECT(MYSQL/PHP) 中加入 2 个表Joining 2 tables in SELECT(MYSQL/PHP)(在 SELECT(MYSQL/PHP) 中加入 2 个表)
如何使<option selected=“selected">由How to make lt;option selected=quot;selectedquot;gt; set by MySQL and PHP?(如何使lt;option selected=“selectedgt;由 MySQL 和 PHP 设置?)
使用 PHP 中的数组自动填充选择框Auto populate a select box using an array in PHP(使用 PHP 中的数组自动填充选择框)
PHP SQL SELECT where like search item with multiple wordsPHP SQL SELECT where like search item with multiple words(PHP SQL SELECT where like search item with multiple words)
json_encode 从 MSSQL-SELECT 产生 JSON_ERROR_UTF8json_encode produce JSON_ERROR_UTF8 from MSSQL-SELECT(json_encode 从 MSSQL-SELECT 产生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(),名称 ASCMySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名称 ASC)