我正在开发一个项目,希望使用Stack Overflow API从堆栈溢出中获取问题。我在这里搜索如何实现相同的方式:
但我发现没什么用,因为它们是旧技术。他们使用旧的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的情况下完成。如果没有,请指导。
答案 0 :(得分:2)
假设您已注册申请。
从此处https://stackapps.com/apps/oauth
转到管理您的应用程序在应用设置中启用客户端流程。
现在,您要创建桌面应用程序,以下是步骤:
首先,您需要通过将用户重定向到此链接来获取访问令牌: https://stackexchange.com/oauth/dialog?client_id=[YOUR_APP_ID]&scope=private_info&redirect_uri=https://stackexchange.com/oauth/login_success
您(作为用户)将批准该应用程序发出的请求。然后,您将被重定向到另一个将存在access_token的链接。
从那里抓取访问令牌并将其放入此链接:
这将是您的现成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。
这应该有效。它对我有用。 :)