【问题标题】:How to get questions using StackOverflow API V 2.2 in PHP如何在 PHP 中使用 StackOverflow API V 2.2 获取问题
【发布时间】:2015-05-14 20:02:32
【问题描述】:

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

  1. how to get a list of questions from stackoverflow API based on search query?
  2. Getting null as response from Stack Overflow API with PHP
  3. 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 获取数据。他们提供了有用的链接,以使用 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 的情况下完成吗?如果没有,请指导。

【问题讨论】:

    标签: php oauth stackexchange-api


    【解决方案1】:

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

    从这里转到管理您的应用程序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。

    这应该可行。它对我有用。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多