我正在为我的网站建立一个小的后台,我想在其中显示网站管理员工具数据,我不能为我的生活搞清楚这一点!
有没有人有任何使用PHP使用API从网站管理员工具中提取数据的PHP示例,我没有获得文档,并且发现了一个看起来不再有效的php类,但是有一个工作的已经出来了有?
如果我有一个开头的例子,我想我可以弄清楚剩下的,我现在用谷歌搜索了几天,并没有取得任何成功。
如果我可以提取属于我的帐户的网站列表,那将是一个开始!!
为了记录我一直在浏览谷歌的文档,但我不能成为第一个想要这样做的人,所以必须有人才能做到这一点!
任何关于扔骨头的人?
伊恩
答案 0 :(得分: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。
答案 1 :(得分:0)
您可以使用此类来获取数据:这已经过测试,可以帮助您获取 TOP_PAGES,TOP_QUERIES,CRAWL_ERRORS,CONTENT_ERRORS,CONTENT_KEYWORDS,INTERNAL_LINKS,EXTERNAL_LINKS,SOCIAL_ACTIVITY
https://github.com/eyecatchup/php-webmaster-tools-downloads
希望这可以帮助你。
答案 2 :(得分:0)
假设您正确设置了应用程序,以下是我采用的方法示例:
// Authenticate through OAuth 2.0
$credentials = new Google_Auth_AssertionCredentials(
'1111111111-somebigemail@developer.gserviceaccount.com',
[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' );
}
我在我的博客上发布了一篇完整的文章,其中有一个示例类我开始编写为Webmaster Tools API和Analytics API的包装器。随意使用它作为参考: