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

时间:2015-05-14 20:02:33

标签: php oauth stackexchange-api

我正在开发一个项目,希望使用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
  4. 但我发现没什么用,因为它们是旧技术。他们使用旧的Stack Overflow API版本。

    在浏览stackapps时,我读到了为了完成这个任务,我必须注册我的应用程序。我在www.stackapps.com上注册了一个应用程序。我有一个APP ID和它的秘密密钥。

    我在这里访问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的情况下完成。如果没有,请指导。

1 个答案:

答案 0 :(得分:2)

假设您已注册申请。

从此处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. 从那里抓取访问令牌并将其放入此链接:

  4. 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。

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