Google Yolo 没有 return access_token 也没有性别信息
Google Yolo doesn't return an access_token nor gender info
我正在为我的网站实施一键登录。
使用正常的 Google 登录,我可以这样做:
window.gapi.auth2.getAuthInstance().signIn()
.then((googleUser) => sendAccessTokenToServer(googleUser.getAuthResponse().access_token))
感谢 access_token,在服务器端我可以做这样的事情并获取诸如性别的个人资料信息:
GoogleCredential.Builder()
.setTransport(httpTransport).setJsonFactory(jsonFactory)
.setClientSecrets(clientId, secret).setRequestInitializer((request -> {
HttpHeaders headers = request.getHeaders();
headers.setAuthorization("Bearer " + accessToken);
})).build();
但是当使用 googleyolo、hint() 或 retrieve() 时,我无法获得 access_token,只能获得 idToken:
googleyolo
.hint({
supportedAuthMethods: [googleUrl, 'googleyolo://id-and-password', scope],
supportedIdTokenProviders: [
{
uri: googleUrl,
clientId
}]
}).then(
(credential) => {
if (credential.idToken) {
sendidTokenToServer(credential.idToken);
}
}
但问题是,当我在服务器端执行时:
GoogleIdToken idToken = null;
try {
idToken = verifier.verify(accessToken);
} catch (Exception e) {
e.printStackTrace();
}
if (idToken != null) {
GoogleIdToken.Payload payload = idToken.getPayload();
// Print user identifier
String userId = payload.getSubject();
System.out.println("User ID: " + userId);
// Get profile information from payload
String email = payload.getEmail();
boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
String name = (String) payload.get("name");
String pictureUrl = (String) payload.get("picture");
String locale = (String) payload.get("locale");
String familyName = (String) payload.get("family_name");
String givenName = (String) payload.get("given_name");
我没有得到性别等信息。
是否可以从 googleyolo 获取 access_token 或获取 idToken 中的性别?
我是此库 Google 的产品经理。 one-tap 库目前不支持访问性别。我的建议是展示你自己的 UI 来收集性别信息(可以再点击一下 M / F / other / skip 等),因为如果这些数据不可用或用户不可用,你将不得不这样做手动注册。并非所有 Google 用户都通过 API 设置或访问性别信息。
我正在为我的网站实施一键登录。 使用正常的 Google 登录,我可以这样做:
window.gapi.auth2.getAuthInstance().signIn()
.then((googleUser) => sendAccessTokenToServer(googleUser.getAuthResponse().access_token))
感谢 access_token,在服务器端我可以做这样的事情并获取诸如性别的个人资料信息:
GoogleCredential.Builder()
.setTransport(httpTransport).setJsonFactory(jsonFactory)
.setClientSecrets(clientId, secret).setRequestInitializer((request -> {
HttpHeaders headers = request.getHeaders();
headers.setAuthorization("Bearer " + accessToken);
})).build();
但是当使用 googleyolo、hint() 或 retrieve() 时,我无法获得 access_token,只能获得 idToken: googleyolo
.hint({
supportedAuthMethods: [googleUrl, 'googleyolo://id-and-password', scope],
supportedIdTokenProviders: [
{
uri: googleUrl,
clientId
}]
}).then(
(credential) => {
if (credential.idToken) {
sendidTokenToServer(credential.idToken);
}
}
但问题是,当我在服务器端执行时:
GoogleIdToken idToken = null;
try {
idToken = verifier.verify(accessToken);
} catch (Exception e) {
e.printStackTrace();
}
if (idToken != null) {
GoogleIdToken.Payload payload = idToken.getPayload();
// Print user identifier
String userId = payload.getSubject();
System.out.println("User ID: " + userId);
// Get profile information from payload
String email = payload.getEmail();
boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
String name = (String) payload.get("name");
String pictureUrl = (String) payload.get("picture");
String locale = (String) payload.get("locale");
String familyName = (String) payload.get("family_name");
String givenName = (String) payload.get("given_name");
我没有得到性别等信息。 是否可以从 googleyolo 获取 access_token 或获取 idToken 中的性别?
我是此库 Google 的产品经理。 one-tap 库目前不支持访问性别。我的建议是展示你自己的 UI 来收集性别信息(可以再点击一下 M / F / other / skip 等),因为如果这些数据不可用或用户不可用,你将不得不这样做手动注册。并非所有 Google 用户都通过 API 设置或访问性别信息。