2011-05-27 288 views
4

我正在爲我的網站構建一個小後臺,並且我想在其中顯示網站管理員工具數據,但我不能爲我的生活弄清楚這一點!網站管理員工具API和PHP

有沒有人有任何使用PHP使用API​​從網站管理員工具拉取數據的PHP示例,我沒有收到文檔並找到一個看起來不再有效的php類,但是已經有工作了在那裏?

如果我有一個例子開始,我想我可以找出其餘的,我已經使用這個搜索了幾天,並沒有取得任何成功。

如果我只能拉一個屬於我的帳戶,這將是一個開始的網站列表!

爲了記錄我一直在挖掘文檔在谷歌,但我不能成爲第一個想要做到這一點的人,所以一定有人得到這個工作!

任何摔跤手都會把我扔骨頭嗎?

Iain

+0

我正在尋找這一點。到目前爲止,我發現的只有這個:** Zend Gdata ** http://code.google.com/apis/gdata/articles/php_client_lib.html http://code.google.com/apis/gdata/articles /php_client_lib.html#gdata-installation http://framework.zend.com/download/gdata/ **其他PHP ** http://www.phpclasses.org/browse/file/30954。html和http://www.simplesoft.it/google-webmaster-tools-api-in-php.html ** API參考** http://code.google.com/intl/zh-CN/apis/webmastertools/ docs/2.0/reference.html只要我得到更多,我會更新此評論。 – Roger 2011-06-10 13:25:58

回答

3

這裏是一個工作示例來獲取站點列表。我使用我的xhttp class這是一個PHP cURL包裝,以隱藏使用cURL的更精細的細節。

<?php 

// Set account login info 
$data['post'] = array(
    'accountType' => 'HOSTED_OR_GOOGLE', // indicates a Google account 
    'Email'  => '', // full email address 
    'Passwd'  => '', 
    'service'  => 'sitemaps', // Name of the Google service 
    'source'  => 'codecri.me-example-1.0' // Application's name' 
); 

// POST request 
$response = xhttp::fetch('https://www.google.com/accounts/ClientLogin', $data); 

// Extract Auth 
preg_match('/Auth=(.+)/', $response['body'], $matches); 
$auth = $matches[1]; 

$data = array(); 
$data['headers'] = array(
    'Authorization' => 'GoogleLogin auth="'.$auth.'"', 
); 

// GET request  
$response = xhttp::fetch('https://www.google.com/webmasters/tools/feeds/sites/', $data); 

echo $response['body']; 

?> 

該腳本的第一件事是通過Google的ClientLogin獲取授權密鑰。使用的服務名稱是sitemaps。您也可以使用OAuth or Oauth2 or AuthSub

接下來是獲取API URL端點以獲取站點列表並僅添加一個Authorization標題字段。

更新日期:2012年4月20日 上述腳本示例中所示的CLIENT LOGIN方法將不再適用,因爲它已被Google棄用。在此處查看詳細信息:https://developers.google.com/accounts/docs/AuthForInstalledApps

最好的解決方案是使用Oauth 2.0連接到Google網站管理員工具API。

0

假設你正確有你的應用程序的設置,這裏是我採取的方法的一個例子:我開始寫的

// Authenticate through OAuth 2.0 
$credentials = new Google_Auth_AssertionCredentials(
    '[email protected]', 
    [Google_Service_Webmasters::WEBMASTERS_READONLY], 
    file_get_contents('path-to-your-key.p12') 
); 
$client = new Google_Client(); 
$client->setAssertionCredentials($credentials); 
if ($client->getAuth()->isAccessTokenExpired()) { 
    $client->getAuth()->refreshTokenWithAssertion(); 
} 
$service = new Google_Service_Webmasters($client); 

// Setup our Search Analytics Query object 
$search = new Google_Service_Webmasters_SearchAnalyticsQueryRequest; 
$search->setStartDate(date('Y-m-d', strtotime('1 month ago'))); 
$search->setEndDate(date('Y-m-d', strtotime('now'))); 
$search->setDimensions(array('query')); 
$search->setRowLimit(50); 

// Pass our Search Analytics Query object as the second param to our searchanalytics query() method 
$results = $service->searchanalytics->query($url, $search, $options)->getRows(); 

// Build a CSV 
if (! empty($results)) { 
    // Setup our header row 
    $csv = "Rank,Query,Clicks,Impressions,CTR,Position\r\n"; 
    foreach ($results as $key => $result) { 
     // Columns 
     $columns = array(
      $key + 1, 
      $result->keys[0], 
      $result->clicks, 
      $result->impressions, 
      round($result->ctr * 100, 2) . '%', 
      round($result->position, 1), 
     ); 
     $csv .= '"' . implode('","', $columns) . '"' . "\r\n"; 
    } 
    file_put_contents(dirname(__FILE__) . '/data.csv'); 
} 

我有一個完整的文章中,我只是貼在我的博客上有一個例子類適用於網站站長工具API和Analytics API的封裝。隨意使用此作爲參考:

http://robido.com/php/a-google-webmaster-tools-api-php-example-using-search-analytics-api-to-download-search-analytics-data-as-csv-with-the-new-oauth-2-0-method/