如何在 PHP 中使用 StackOverflow API V 2.2 获取问题

How to get questions using StackOverflow API V 2.2 in PHP

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

  1. Getting null as response from Stack Overflow API with PHP
  2. How to use Stack Overflow API in PHP

但我没有发现任何有用的东西,因为它们是旧技术。他们使用旧的 Stack Overflow API 版本。

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

我访问了这里 https://api.stackexchange.com/docs/authentication 以了解如何从堆栈中获取数据 API V 2.2。他们提供了有用的 links 来使用 Stack Overflow API V 2.0 使用 OAuth 2.0

身份验证获取数据

它说向用户请求请求然后得到 "code" 等等。我被困在这里了。使用 PHP.

前进的过程应该是什么

我的应用应该这样做:

设输入 link 为:https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=Whosebug

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

没有OAuth可以吗。如果没有,请指导。

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

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

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

现在您要创建桌面应用程序,步骤如下:

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

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

  3. 从那里获取访​​问令牌并将其放入此 link :

https://api.stackexchange.com/2.2/questions?order=descsort=activity&site=Whosebug&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.

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