OAuthException: (#2) 未能创建任何应用请求

Posted

技术标签:

【中文标题】OAuthException: (#2) 未能创建任何应用请求【英文标题】:OAuthException: (#2) Failed to create any app request 【发布时间】:2013-03-14 09:19:35 【问题描述】:

我正在使用以下代码从应用程序向用户发送请求。一切都很好,但突然停止工作,我收到一个错误:

$config = array();
$config['appId'] = $this->app_id;
$config['secret'] = $this->app_secret;
$facebook = new Facebook($config);
$url = "https://graph.facebook.com/oauth/access_token?client_id=$this->app_id&client_secret=$this->app_secret&grant_type=client_credentials";
$token = file_get_contents($url);
$request = $facebook->api('/'.$id.'/apprequests', 'POST', array(
   'message' => $text,
   'access_token' => $token
  )
  );

看起来令牌是有效的,我不知道还有哪里可能是问题。

【问题讨论】:

我没有看到你实际上在代码中的任何地方使用令牌...... 对不起,我在示例代码'access_token' => $token(已修复)中遗漏了一行,但原始代码是可以的,错误仅在示例中出现。购买方式,我在 Graph API Explorer 中也遇到此错误。 screen 端点确实只返回令牌,而是返回access_token=YOUR_APP_ACCESS_TOKEN形式的字符串。所以你作为access_token 参数传递的并不是真正的访问令牌。 这就是问题所在!非常感谢! 【参考方案1】:

端点不仅返回令牌,而是返回access_token=YOUR_APP_ACCESS_TOKEN形式的字符串。

所以你作为access_token 参数传递的并不是真正的访问令牌——你必须首先修剪access_token=

【讨论】:

应在上面的代码中添加以下行:$psevdo_token = file_get_contents($url); $temp = explode('=', $psevdo_token); $token = $temp[1]; 【参考方案2】:

您需要一个有效的应用 access_token 才能向 API 发出请求。创建应用程序 access_token 的最简单方法是使用 app_id 和 secret。正如Facebook documentation 所说:

还有另一种调用 Graph API 的方法 需要使用生成的应用令牌。您只需传递您的应用程序 ID 和 app secret 作为调用时的 access_token 参数:

https://graph.facebook.com/endpoint?key=value&access_token=app_id|app_secret

【讨论】:

以上是关于OAuthException: (#2) 未能创建任何应用请求的主要内容,如果未能解决你的问题,请参考以下文章

OAuthException "(#210) 主题必须是一个页面。"

OAuthException 200 facebook sdk wp8

Facebook 错误:“(#100)无效参数”、“OAuthException”、“代码”:100

Facebook:OAuthException:此授权码已被使用

尝试在 Facebook 中注册成就时出现 OAuthException 2500(未知路径组件)

OAuthException (#368) 尝试的操作被视为滥用或以其他方式被禁止