我已将Google plus与我的Android应用集成。一切正常,我也连接到谷歌加,但我无法得到当前用户的名称。
public void onConnected(Bundle connectionHint) {
String personName="Unknown";
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
personName = currentPerson.getDisplayName();
}
}
Plus.PeopleApi.getCurrentPerson(mGoogleApiClient)
此方法始终返回 null 。
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:10)
对我而言,此次调用返回null的原因是我的应用程序未启用Google+ API。导航至https://console.developers.google.com,选择您的项目并启用Google+ API以使其正常运行!
答案 1 :(得分:7)
你必须添加这一行:
Plus.PeopleApi.loadVisible(mGoogleApiClient, null).setResultCallback(this);
像这样:
public void onConnected(Bundle connectionHint) {
/* This Line is the key */
Plus.PeopleApi.loadVisible(mGoogleApiClient, null).setResultCallback(this);
String personName="Unknown";
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
personName = currentPerson.getDisplayName();
.........
}
}
答案 2 :(得分:5)
在我的情况下返回null,因为我添加了该行:
addScope(新范围(Scopes.EMAIL))
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(new Scope(Scopes.PROFILE))
//.addScope(new Scope(Scopes.EMAIL))
.build();
================= UPDATE ======================== 范围应设置如下:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_PROFILE)
.addScope(Plus.SCOPE_PLUS_LOGIN)
.build();
答案 3 :(得分:2)
检查您是否通过SHA1密钥库生成了调试和生产客户端ID。 它显示在 API&验证 - > project的凭据标签。 Android文档的
在终端中,运行Keytool实用程序以获取经过数字签名的.apk文件的公共证书的SHA1指纹。
... debug-keystore的示例......
重要提示:当您准备将应用程序发布给用户时,请再次按照这些步骤为您的生产应用程序创建新的OAuth 2.0客户端ID。对于生产应用,请使用您自己的私钥对生产应用的.apk文件进行签名。
答案 4 :(得分:2)
我尝试了很多方法,但我仍然面临同样的问题。最后,在app build.gradle文件中,我发现我的applicationId与Credentials中的包名称不同。我解决了这个问题,一切都像魅力一样。
因此,请确保:
都是一样的。
希望这有助于某人。