2015-05-14 11 views
1

我工作的一個項目,並希望得到使用堆棧溢出API從堆棧溢出的問題。我搜索方式如何實現同樣在這裏:如何獲得使用StackOverflow的API V 2.2的問題在PHP

  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的數據。他們給了有用的鏈接通過OAuth 2.0獲得使用堆棧溢出API v如果使用認證2.0數據

它說,要求從用戶的請求,然後得到「代碼」等我被困在這裏。爲了繼續使用PHP,應該是什麼過程。

我的應用應該這樣做:

讓輸入鏈接爲:https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=stackoverflow

我在任何兩個形式的HTML或JSON的得到這個頁面的數據。

可不可以不OAuth的完成。如果不是,請指導。

回答

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. 抓鬥從那裏訪問令牌,並把它放在這個鏈接:

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。

這應該工作。它爲我工作。 :)