我编写了一个简单的网站列表查询代码,该代码使用Oauth和基于Google 文档的服务帐户.正在使用的身份验证密钥文件(.p12)以及帐户都是有效的.
问题是站点列表方法返回一个空列表.
service.sites().list().execute();
Run Code Online (Sandbox Code Playgroud)
此外,如果我明确尝试通过调用获取经过验证的站点的站点地图
service.sitemaps().list("my.sample.site.com").execute();
Run Code Online (Sandbox Code Playgroud)
我收到了403 Forbidden - "用户没有足够的权限访问'sample.site.com'.另请参阅:https://support.google.com/webmasters/answer/2451999." 来自API的错误.
根据我的调试,API完美地加载密钥文件(.p12)并管理访问令牌等没有问题.
尽管如此,我的服务帐户身份验证可能存在问题.
依赖关系:
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-webmasters</artifactId>
<version>v3-rev6-1.20.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
示例代码:
package webmastertools;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.webmasters.Webmasters;
import com.google.api.services.webmasters.WebmastersScopes;
import com.google.api.services.webmasters.model.SitesListResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.File;
import java.util.Collections;
public class GoogleWebmastersClient {
static Log logger = LogFactory.getLog(GoogleWebmastersClient.class);
public static void main(String args[]) {
try {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
String …Run Code Online (Sandbox Code Playgroud) java google-webmaster-tools oauth-2.0 google-api-java-client google-oauth