修改
经过一次新的尝试,我终于结婚了。我没有改变实施。我想我的Google Plus个人资料中的更改需要花费几个小时来传播,让我的生日公开。比预期的多一点。现在我想知道当用户登录时是否可以请求此许可(生日),而不需要公开生日。
正如developers guide中的此信息所示:
有关可能提供的其他个人资料数据,请参阅 GoogleSignInAccount。请注意,任何配置文件字段都可以为null, 取决于您请求的范围和信息 用户的个人资料包括。
初始发布
我希望在用户登录Google Plus后获得用户的生日。一般不熟悉Google API,我想知道我的实现是否有意义。现在,我只是想通过链接到我设备的Google帐户开始自己的生日。
这就是我所做的。我按照developer guide的步骤进行了登录程序。除了OAuth之外,我还在gradle中添加了Google Plus依赖项:
编译'com.google.android.gms:play-services-plus:8.3.0'
在我的Activity
中,有一个登录Google Plus的按钮。
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(Scopes.PLUS_ME), new Scope(Scopes.PLUS_LOGIN),new Scope(Scopes.PROFILE))
.build();
GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.build();
loginButton = (SignInButton) findViewById(R.id.sign_in_button);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
});
首次登录后,我尝试连接到Google Play服务。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
Log.d(TAG, "handleSignInResult:" + result.isSuccess());
if (result.isSuccess()) {
mGoogleApiClient.connect(GoogleApiClient.SIGN_IN_MODE_OPTIONAL);
}
}
}
连接后,我尝试获取用户的生日。
@Override
public void onConnected(Bundle bundle) {
Person currentPerson = Plus.PeopleApi
.getCurrentPerson(mGoogleApiClient);
addGoogleProfile(currentPerson); //Add the user to a list of persons
refreshListView(); //update the listView
Log.d(TAG, "Current person: name=" + currentPerson.getDisplayName() + ", has birthday = " + (currentPerson.hasBirthday() ? "yes, it is" + currentPerson.getBirthday() : "no"));
}
问题
生日永远不会设置,并且始终显示为空。可以访问其他数据,例如名称和配置文件图像。我没有找到关于不同Scopes的更多信息。我更熟悉Facebook API,登录时更明确地请求权限。
关于我遗失的任何想法?
何而我将我的生日字段设置为相关Google帐户的“公开”。
干杯
答案 0 :(得分:0)
亲爱的,您只能获得以下信息: -
mePerson.getId()
mePerson.getDisplayName()
mePerson.getImage().getUrl()
mePerson.getUrl()
答案 1 :(得分:0)
我们可以从gmail获取用户的生日,但为此用户需要公开了解生日。
请按照以下步骤操作: