我在使用Google Play服务获取Google身份验证以在我的Android应用中工作时遇到了一些问题。 首先,我用库提供的样本以获得使用范围令牌波纹管通过服务器端验证设置获取Android Google身份验证中的用户信息
GoogleAuthUtil.getToken(getActivity(), mEmail,"oauth2:https://www.googleapis.com/auth/userinfo.profile");
然后我用令牌来获取有关用户的详细信息:
URL url = new URL("https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + token);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
这工作。然后,我使用Google Developers Blog上的Verifying Back-End Calls from Android Apps发布来验证应用用户访问我的网络服务器。所以我取代了为gettoken的范围与
audience:server:client_id:<webapp_clientId_for_localhost>.apps.googleusercontent.com
,并采用了类似的检查与一个在文章中,以验证在服务器端的观众和的clientId(Android客户端ID)。这也工作了,但如果我试图获取有关用户(姓和名)的详细信息,无论是从Android应用或Web应用程序,使用用户信息API获得:
{“错误” :“错误”:[“域名”:“全球”, “原因”:“authError”, “消息”:“无效凭证”, “locationType”:“标头”, “location” “授权”}], “代码”:401, “消息”: “无效凭证”}}
我使用的代码是:
URL url = new URL("https://www.googleapis.com/oauth2/v1/userinfo");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestProperty("Authorization", "OAuth " + token);
con.setRequestProperty("ContentType", "application/json; charset=UTF-8");
任何想法为什么userinfo无法正常工作?还有什么我应该添加到范围?
是的,这就是我最终做的。 – 2013-02-18 05:54:27
嘿@breno,这个用于为我工作,但仅仅在几天前它停止工作,现在它引发了这个错误com.google.android.gms.auth.GoogleAuthException:Unknown。任何想法为什么?我的示波器有问题吗? https://gist.github.com/lawloretienne/7351151 – toobsco42 2013-11-07 17:04:44
糟糕,没有注意到这个问题。你还在遇到这个问题吗? – breno 2014-02-08 21:28:44