问题描述
我必须在我的应用程序中实现以下流程:
- 用户通过谷歌在移动应用上进行身份验证
- 移动应用将用户 accesstoken 发送到后端
- 使用 accesstoken 创建凭据对象以用于创建 People Api 服务
- 后端获取电子邮件、姓名和生日以将其保存到数据库中。
现在,我的范围有问题,发生以下异常:
"获取https://people.googleapis.com/v1/people/me/connections?personFields=birthdays { “代码”:403, “错误”:[{ “域”:“全局”, "message" : "权限不足",“原因”:“权限不足” }],"message" : "请求的身份验证范围不足。",“状态”:“PERMISSION_DENIED” }"
这并不奇怪,因为事实上,我不知道在不再次启动登录过程的情况下我可以在哪里设置范围(在后端我只得到令牌,没有用户凭据)。到目前为止,这是我的代码:
public Optional<SocialProfileDto> findByToken(String token) {
PeopleService service = null;
try {
service = getPeopleService(token);
} catch (GeneralSecurityException e) {
e.printstacktrace();
} catch (IOException e) {
e.printstacktrace();
}
try {
ListConnectionsResponse connectionsResponse = service
.people()
.connections()
.list("people/me")
.set("personFields","birthdays")
.execute();
connectionsResponse.getTotalPeople();
} catch (IOException e1) {
e1.printstacktrace();
}
return null;
}
private PeopleService getPeopleService(String token) throws GeneralSecurityException,IOException {
Credential credential = null;
credential = createCredentialWithAccesstokenOnly(getToken(token));
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
PeopleService service = new PeopleService.Builder(HTTP_TRANSPORT,JSON_FACTORY,credential).
.setApplicationName(APPLICATION_NAME).build();
return service;
}
private TokenResponse getToken(String token) {
TokenResponse tokenResponse = new TokenResponse();
tokenResponse.setAccesstoken(token);
tokenResponse.setTokenType("Bearer");
tokenResponse.setExpiresInSeconds(3599L);
tokenResponse.setScope("https://www.googleapis.com/auth/user.birthday.read https://www.googleapis.com/auth/user.phonenumbers.read https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile");
return tokenResponse;
}
public static Credential createCredentialWithAccesstokenOnly(TokenResponse tokenResponse) {
return new Credential(BearerToken.authorizationHeaderAccessMethod()).setFromTokenResponse(tokenResponse);
}
问题:该流程甚至可以实施吗?如果是这样,那么我可以在哪里设置范围?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)