Facebook OAuth访问令牌错误
完整代码Facebook OAuth访问令牌错误,facebook,facebook-graph-api,oauth,Facebook,Facebook Graph Api,Oauth,完整代码 public function indexAction(){ echo '<a href="https://www.facebook.com/dialog/oauth?client_id=475302972487577&redirect_uri=http://bp.mysite.com/en/social/fblogin" target="_blank">Login met facebook</a> '; } con
public function indexAction(){
echo '<a href="https://www.facebook.com/dialog/oauth?client_id=475302972487577&redirect_uri=http://bp.mysite.com/en/social/fblogin" target="_blank">Login met facebook</a> ';
}
const FB_GRAPH_URL = "https://graph.facebook.com/";
public function fbloginAction() {
$fbCode = $this->_getParam("code");
$getStr = self::FB_GRAPH_URL. 'oauth/access_token?' .http_build_query(array(
'client_id' => 'APP_ID',
'type' => 'client_cred',
'client_secret' => 'SECRET_KEY',
'code' => $fbCode)
);
$accessToken = file_get_contents( $getStr );
krumo($accessToken) ;
$dbpath = "https://graph.facebook.com/me?$accessToken" ;
$cont = file_get_contents($dbpath ) ;
krumo($cont);
}
我收到错误消息:
无法打开流:HTTP请求失败!HTTP/1.0 400错误请求
在家里
将$dbpath值(path)手动粘贴到web浏览器时,我遇到了下一个错误:
{
"error": {
"message": "An active access token must be used to query information about the current user.",
"type": "OAuthException",
"code": 2500
}
}
如何修复该错误?您可能希望使用服务器端身份验证流。通过检查中的呼叫,可以很清楚地知道您的哪些呼叫是错误的 首先,对
oauth/access\u令牌
端点的调用不带任何参数'type'=>'client\u cred'
,但它需要用于重定向\u uri的参数
$getStr = self::FB_GRAPH_URL . 'oauth/access_token?' . http_build_query(array(
'client_id' => 'APP_ID',
'redirect_uri' => 'REDIRECT_URI',
'client_secret' => 'SECRET_KEY',
'code' => $fbCode)
);
然后,您不能将此呼叫的应答作为您的访问令牌
,因为其中包含更多内容:
access_token=USER_ACCESS_TOKEN&expires=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES
您只需要访问\u令牌
的一部分:
$response = file_get_contents($getStr);
$params = null;
parse_str($response, $params);
$dbpath = "https://graph.facebook.com/me?access_token=" . $params['access_token'];
如果您没有足够的经验来阅读、理解和实现oauth2,为什么不使用呢?先生,我不知道如何使用它。此SDk的示例在我的站点上不可用。在哪里可以找到使用Facebook API的“逐步”手册?1。2.还有随fb php sdkUsing一起提供的SDK,它确实让很多事情更容易处理;我强烈建议使用它,而不是“手动”操作,因为手动操作更容易出错,并且存在许多陷阱,这显然不会让初学者更容易操作。(如果您在使用它时遇到问题,那么我们可以讨论这些。)–至于您的代码,我们没有人知道您的函数krumo()
应该做什么……谢谢您,先生。我使用Facebook SDK。但我不明白什么是错误:“代码”:如何修复?Krumo()是PHP程序员非常好的调试器。你可以在下一个链接上找到它:谢谢你,你帮了我很多!:)
$response = file_get_contents($getStr);
$params = null;
parse_str($response, $params);
$dbpath = "https://graph.facebook.com/me?access_token=" . $params['access_token'];