FB交换令牌api缺少redirect_uri

时间:2012-07-01 14:27:34

标签: facebook redirect facebook-oauth

我正在使用这样的FB交换令牌api:

https://graph.facebook.com/oauth/access_token?client_id={client_id}8&client_secret={client_secret}}&grant_type=fb_exchange_token&fb_exchange_token={one_hour_token}&redirect_uri=http%3A%2F%2Fotagz.cloudfoundry.com%2FfacebookCallback

我收到以下错误:

  

“message”:“缺少redirect_uri参数。,         “type”:“OAuthException”,         “代码”:191

我有我的申请网址:otagz.cloudfoundry.com

我知道有关于这个问题的另一个问题,但没有解决方案,而且是从2010年开始。

有人知道redirect_uri有什么问题吗?

谢谢, 克里斯蒂安

4 个答案:

答案 0 :(得分:11)

如果您正在使用CURL命令行工具 - 可能您遇到了与我相同的问题:只需将URL放在引号中即可。有关此错误,请参阅Facebook答案:https://developers.facebook.com/bugs/1374437326120797

我不确定Facebook使用Stackoverflow作为官方通信方式。你可以在这里得到更快的答案:https://developers.facebook.com/bugs/

答案 1 :(得分:2)

有同样的问题,通过从网址中删除空格来解决它(我从Facebook网站上复制了它,并且在参数之间有一些额外的空格)

答案 2 :(得分:0)

我正面临着你的问题,但我设法用下面的方法来解决它。 它不需要重定向

假设您已经获得了短期访问令牌

$accessToken;

$graph_url = "https://graph.facebook.com/oauth/access_token?client_id=".$your_app_id."&client_secret=".$your_app_secretkey."&grant_type=fb_exchange_token&fb_exchange_token=".$accessToken;

$result = file_get_contents($graph_url);

parse_str($result, $output);

echo $output[access_token];
echo $output[expires];  

答案 3 :(得分:0)

尝试将参数grant_type设置为client_credentials。网址将如下所示:https://graph.facebook.com/v2.8/oauth/access_token?client_id=XXX&client_secret=XXX&fb_exchange_token=XXX&grant_type=client_credentials

或者让它更具可读性:

$q = http_build_query(array(
    'client_id' => $app_id,
    'client_secret' => $app_secret,
    'fb_exchange_token' => $user_token,
    'grant_type' => 'client_credentials'
));
$url = "https://graph.facebook.com/v2.8/oauth/access_token?$q";