2

我正在做一个项目,想使用 Stack Overflow API 从堆栈溢出中获取问题。我在这里搜索了如何实现相同的方法:

  1. 如何根据搜索查询从stackoverflow API获取问题列表?
  2. 使用 PHP 从 Stack Overflow API 获取 null 作为响应
  3. 如何在 PHP 中使用 Stack Overflow API

但我发现没有什么有用的,因为它们是旧技术。他们正在使用旧的 Stack Overflow API 版本。

在浏览 stackapps 时,我读到要完成这项任务,我必须注册我的应用程序。我已经在 www.stackapps.com 上注册了一个应用程序。我得到了一个 APP ID 和它的 SECRET KEY。

我访问了这里https://api.stackexchange.com/docs/authentication以了解如何从堆栈 API V 2.2 获取数据。他们提供了有用的链接,以使用 Stack Overflow API V 2.0 通过 OAuth 2.0 进行身份验证来获取数据

它说要求用户提出请求,然后获取“代码”等。我被困在这里。为了继续使用 PHP,应该是什么过程。

我的应用程序应该这样做:

让输入链接为:https ://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=stackoverflow

我以 HTML 或 JSON 两种形式中的任何一种形式获取此页面的数据。

可以在没有 OAuth 的情况下完成吗?如果没有,请指导。

4

1 回答 1

3

假设您已经注册了您的应用程序。

从这里转到管理您的应用程序https://stackapps.com/apps/oauth

在应用设置中启用客户端流。

现在,当您要创建桌面应用程序时,以下是步骤:

  1. 首先,您需要通过将用户重定向到此链接来获取访问令牌: https ://stackexchange.com/oauth/dialog?client_id=[YOUR_APP_ID]&scope=private_info&redirect_uri=https://stackexchange.com/oauth/login_success

  2. 您(作为用户)将批准应用程序提出的请求。然后您将被重定向到另一个链接,其中将有一个 access_token。

  3. 从那里获取访​​问令牌并将其放在此链接中:

https://api.stackexchange.com/2.2/questions?order=descsort=activity&site=stackoverflow&key=[YOUR_APP_KEY]&access_token=[YOUR_ACCESS_TOKEN]&filter=withbody

这将是您准备好的 API。

使用以下方式获取内容:

$context = stream_context_create(array('https' => array('header'=>'Connection: close\r\n')));
$json_array = file_get_contents("YOUR_API_URL", false, $context);
$data = json_decode(gzdecode($json_array),true);
print_r($data); // Show your file data

您将获得的数据采用 JSON 格式并经过压缩(以 GZIP 格式)。所以我们解压它然后解码JSON。

这应该有效。它对我有用。:)

于 2015-05-18T14:34:38.387 回答