【问题标题】:"Invalid verification code format." facebook oauth error“验证码格式无效。” facebook oauth 错误
【发布时间】:2011-05-19 14:15:09
【问题描述】:

我是 Facebook 应用程序开发的初学者。我遇到了身份验证问题,我正在尝试使用此网址:

https://graph.facebook.com/oauth/access_token?client_id=$client_id&client_secret=$client_secret&type=client_credentials&redirect_uri=http://www.wesbite.com/facebook/&scope=email,offline_access

但我收到此错误: "验证码格式无效。"

过去三个小时我一直在尝试解决它,但没有结果。我尝试用谷歌搜索这条消息,但显然它不是那么受欢迎。

你能帮忙吗?

编辑: 我使用这个功能:

function get_contents($link)
{
if (function_exists('curl_init')) {
    $curl    = curl_init();
    $timeout = 0;
    curl_setopt($curl, CURLOPT_URL, $link);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
    $buffer = curl_exec($curl);
    curl_close($curl);
    return $buffer;
} elseif (function_exists('file_get_contents')) {
    $buffer = file_get_contents($link);
    return $buffer;
} elseif (function_exists('file')) {
    $buffer = implode('', @file($link));
    return $buffer;
} else {
    return 0;
}
}

然后我将url作为参数传递:

$url = "https://graph.facebook.com/oauth/access_token?client_id=$client_id&client_secret=$client_secret&type=client_credentials&redirect_uri=http://www.mywebsite.com/facebook/&scope=email,offline_access";

echo get_contents($url);

【问题讨论】:

  • 在调用 echo get_contents($url) 之前回显 $url 可能很有用,以确保所有变量都已设置。
  • 我这样做了,还仔细检查了这些值,它们都是正确的

标签: php facebook


【解决方案1】:

我认为以下链接提供了答案:http://developers.facebook.com/docs/authentication/#authenticating-users-in-a-web-application

您首先需要使用您的 client_id 和 redirect_uri 调用 https://graph.facebook.com/oauth/authorize。然后,这会将您重定向回 redirect_uri,并在查询字符串中使用验证码,您可以将其传递给您的 https://graph.facebook.com/oauth/access_token 调用(通过 code 参数)以交换 oAuth 访问令牌。

祝你好运! :)

【讨论】:

  • 非常感谢。在您解释该过程之前,我已阅读该页面超过 10 次(我想我读错了方式)。但是有一个问题,我正在尝试使用 header(location: xxxx) 进行重定向,但是我得到的是 facebook 按钮,而不是重定向。点击它会带我到正确的页面。我该如何解决这个问题
  • 有趣,听起来您正在使用 Facebook JavaScript SDK (developers.facebook.com/docs/authentication/…)?如果是这样,您的代码应该直接使用 oAuth 2.0 进行身份验证(即不需要上述调用),前提是您有正确的包含(all.js)和脚本(例如 FB.init)。如上面的链接页面所示,您可以订阅“auth.login”事件并在用户通过身份验证后在回调中重定向。如果您没有使用 JavaScript SDK,请尝试删除 标记。
  • 谢谢。我实际上正在使用 PHP SDK。我从未在应用程序的任何部分使用过 js。如果我像这样直接访问应用程序:www.mywebsite.com/folder(这是我保存应用程序文件的地方),我会得到正确的页面,即权限页面。
  • 好的。我使用以下代码解决了这个问题:$loginUrl = $facebook->getLoginUrl(array)。然后将页面重定向到它。非常感谢 Robarondaz 的解决方案。非常感谢您的帖子。
猜你喜欢
  • 2011-12-07
  • 2016-08-14
  • 2012-02-25
  • 2012-01-04
  • 2011-05-22
  • 2015-01-27
  • 2022-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多