几天来,我一直在为此头疼,试图弄清楚这是怎么做到的。我想从我已经成功完成的谷歌网站管理员工具下载 CSV。但是,我必须直接传递我希望访问的帐户的用户名和密码。对于网站管理员工具的所有其他方面,我只是让用户登录,然后我从那里登录的令牌与可重用的会话令牌交换。
在获取查询数据时,我似乎无法使用此方法。
String next = "http://xyz.domain.com/auth"; //sets page to goto after user log's in so we can pass the token to application
String scope = "http://www.google.com/webmasters/tools/feeds"; // sets the scope of the token
boolean secure = false;
boolean session = true;
String urlFromAuthSub = AuthSubUtil.getRequestUrl(next, scope, secure, session); //generates the URL to forward user to loginto google.
在您的捕获页面(上面代码中的下一个参数)上,您会在成功登录后收到令牌。然后您将其交换为会话令牌。
String token = "##########################";
String sessionToken = AuthSubUtil.exchangeForSessionToken(token, null);
//store sessionToken for all future use to interact with webmaster for this user.
最后我们简单地创建我们的WebmasterToolsService
对象并将其设置AuthSubToken
为会话令牌,然后完成!
WebmasterToolsService myService = new WebmasterToolsService("DemoWebmaster");
myService.setAuthSubToken(token);
但是,当尝试下载 CSV 时,我别无选择,只能使用 Google 用户的完整凭据。
String host = "www.google.com";
String dl_list_url = "/webmasters/tools/downloads-list?hl=%s&siteUrl=%s";
String sites_path = "/webmasters/tools/feeds/sites/";
WebmasterToolsService svc = new WebmasterToolsService("DemoQuery Service");
svc.setUserCredentials("xyz@domain.com", "123456");
之后,当我通过完整的客户端登录时,我可以使用网站管理员 API 做任何事情。但是,对于我正在构建的应用程序,我不需要存储用户的完整 Google 凭据。
当您添加 Google 网站管理员 API 时,我看到一家公司设法以某种方式实现了这一目标。但我似乎看不出这是怎么可能的。有任何想法吗?