在Android中使用People API和OAuth 2 API来获取Google登录用户的性别和生日信息,可以按照以下步骤进行:
people().get()
方法,传入用户的资源名称(resource name)和所需的字段参数,来获取用户的个人信息。以下是一个示例代码,展示了如何使用People API和OAuth 2 API来获取Google登录用户的性别和生日信息:
// 配置项目依赖
dependencies {
implementation 'com.google.android.gms:play-services-people:18.0.0'
implementation 'com.google.android.gms:play-services-auth:19.2.0'
}
// 获取授权
private void authorizeUser() {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestProfile()
.build();
GoogleSignInClient signInClient = GoogleSignIn.getClient(this, gso);
Intent signInIntent = signInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
// 处理授权结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}
// 处理登录结果
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
String accessToken = account.getIdToken();
// 创建People API客户端
HttpTransport httpTransport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken);
PeopleService peopleService = new PeopleService.Builder(httpTransport, jsonFactory, credential)
.setApplicationName("Your Application Name")
.build();
// 请求用户信息
Person profile = peopleService.people().get("people/me")
.setPersonFields("genders,birthdays")
.execute();
// 解析响应
List<Gender> genders = profile.getGenders();
List<Birthday> birthdays = profile.getBirthdays();
if (genders != null && !genders.isEmpty()) {
Gender gender = genders.get(0);
String genderValue = gender.getValue();
// 处理性别信息
}
if (birthdays != null && !birthdays.isEmpty()) {
Birthday birthday = birthdays.get(0);
Date date = birthday.getDate();
// 处理生日信息
}
} catch (ApiException e) {
// 处理异常
} catch (IOException e) {
// 处理IO异常
}
}
请注意,以上代码仅为示例,实际使用时需要根据自己的项目结构和需求进行适当的修改。另外,为了保证代码的安全性和稳定性,建议在实际开发中使用Google官方提供的文档和示例作为参考,并遵循最佳实践。
领取专属 10元无门槛券
手把手带您无忧上云