我正在构建一个应用程序,需要从已记录的Google帐户中检索个人信息(特别是完整的姓名,个人资料图片和封面图片),并且我试图在不执行Google+登录的情况下执行此操作我认为这在我的具体案例中是一种矫枉过正的行为。
这是我用来验证
的GoogleAccountCredential对象 credential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(), Arrays.asList(SCOPES))
.setBackOff(new ExponentialBackOff())
.setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
而SCOPES是
private static final String[] SCOPES = {CalendarScopes.CALENDAR_READONLY, CalendarScopes.CALENDAR, "profile", "email", "https://www.googleapis.com/auth/plus.login" };
现在,当我启动应用程序时,我被正确地要求使用所请求信息的权限:
https://www.dropbox.com/s/e11y0gnnemfgu02/Screenshot_2015-08-11-19-41-08~01.png?dl=0
当我想要检索所需的数据时,我执行AsyncTask,在那里我发出以下GET请求
CloseableHttpResponse response = httpClient.execute(new HttpGetHC4("https://www.googleapis.com/plus/v1/people/me"));
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
Log.d("ProfileTask", result.toString() );
我得到了回复
{ "error":
{ "errors":
[ { "domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console" } ],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup." }}
现在:
我还尝试使用创建的公共API密钥发出GET请求,例如
GET https://www.googleapis.com/plus/v1/people/me?key={MY_API_KEY}
只是为了得到相同的结果,甚至在它说的时候出现错误" ipRefererBlocked在API密钥上配置了每IP或每个Referer限制,并且请求与这些限制不匹配。如果允许来自此IP或引用者的请求,请使用Google Developers Console更新您的API密钥配置。"
我做错了什么?我误解了这些API的功能吗?如果不与Google +签名,我还能如何检索这些数据?
非常感谢你的帮助。
编辑:我也尝试使用http请求中来自credentials.getToken()的accessToken进行访问:
GET https://www.googleapis.com/plus/v1/people/me?accesstoken={ACCESS_TOKEN}
无效,与以前相同的错误。