2

私はプロジェクトに取り組んでおり、スタック オーバーフロー API を使用してスタック オーバーフローから質問を取得したいと考えています。ここで同じことを達成する方法を検索しました:

  1. 検索クエリに基づいてstackoverflow APIから質問のリストを取得する方法は?
  2. PHP でスタック オーバーフロー API からの応答として null を取得する
  3. PHP でスタック オーバーフロー API を使用する方法

しかし、それらは古い手法であるため、有用なものは何も見つかりませんでした。古いスタック オーバーフロー API バージョンを使用しています。

stackapps を実行しているときに、このタスクを達成するにはアプリを登録する必要があることを読みました。www.stackapps.com にアプリを登録しました。APP IDとそのSECRET KEYを取得しました。

スタック API V 2.2 からデータを取得する方法を知るために、https://api.stackexchange.com/docs/authenticationにアクセスしました。彼らは、OAuth 2.0 による認証を使用して Stack Overflow API V 2.0 を使用してデータを取得するための便利なリンクを提供しています。

ユーザーからのリクエストを求めてから「コード」などを取得すると書かれています。ここで立ち往生しました。PHPを使用して前進するためには、どのようなプロセスが必要ですか。

私のアプリはこれを行う必要があります:

入力リンクを次のようにします: https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=stackoverflow

このページのデータは、HTML または JSON の 2 つの形式のいずれかで取得します。

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 に答える