无法检索reddit用户身份

时间:2014-11-23 06:39:24

标签: php authentication oauth single-sign-on reddit

我只需要在我的网站(在php中)验证Reddit用户。我正在使用带有stream_context_create的简单file_get_contents作为标头。我已经实施了Facebook用户身份验证。

对于Reddit,我可以成功获得access_token。但是当我用access_token获取请求/ api / v1 / me时,我总是得到HTTP / 1.1 403 Forbidden。

请帮助。

这是我收到access_token后正在使用的php代码

$opts = array('http' =>
    array(
    'method'  => 'GET',
    'header' => 'Authorization: bearer '.$result->access_token)
);
$context  = stream_context_create($opts);
$result = file_get_contents('https://oauth.reddit.com/api/v1/me', false, $context);

我有什么遗漏......

这是var_dump

array(7) {
  [0]=>  string(22) "HTTP/1.1 403 Forbidden"
  [1]=>  string(24) "Server: cloudflare-nginx"
  [2]=>  string(35) "Date: Sun, 23 Nov 2014 06:XX:XX GMT"
  [3]=>  string(38) "Content-Type: text/html; charset=UTF-8"
  [4]=>  string(17) "Connection: close"
  [5]=>  string(139) "Set-Cookie: __cfduid=XXXXXXXX; expires=Mon, 23-Nov-15 06:XX:XX GMT; path=/; domain=.reddit.com; HttpOnly"
  [6]=>  string(28) "CF-RAY: XXXXXXXXX-XXX"
}

1 个答案:

答案 0 :(得分:1)

根据reddit API rules,您需要根据您的请求发送唯一的用户代理。

  

将客户的用户代理字符串更改为唯一且具有描述性的字符串,最好是引用您的reddit用户名   示例:User-Agent: flairbot/1.0 by spladug
  许多默认的用户代理(如“Python / urllib”或“Java”)受到极大的限制,以鼓励使用唯一的描述性用户代理字符串。