[英]What is an example of using OAuth 2.0 and Google Spreadsheet API with Java?
[英]Using Google Calendar API fro Java and Oauth 2.0: “Insufficient Permission” error
我有一个应用程序,用户可以使用谷歌登录。 比用户在进入应用程序期间可以选择整合GoogleCalendar服务。 为了实现这一点,我的实际系统的工作方式如下:
- 当用户使用谷歌登录时,系统会存储他的访问权限并刷新令牌,并致电Google以检索基本个人资料信息。 为此,我使用以下调用创建了一个GoogleCalendar对象:
GoogleTokenResponse response = flow.newTokenRequest(code).setRedirectUri(GOOGLE_CALLBACK_URI).execute();
GoogleCredential credential= new GoogleCredential.Builder().setJsonFactory(Constants.JSON_FACTORY)
.setTransport(Constants.HTTP_TRANSPORT).setClientSecrets(Constants.GOOGLE_CLIENT_ID, Constants.GOOGLE_CLIENT_SECRET).build();
credential.setAccessToken(response.getAccessToken());
credential.setRefreshToken(response.getRefreshToken());
- 当用户选择集成日历服务时,另一个Oauth迭代开始,并使用新代码。 我像之前一样询问GoogleCredential并访问该服务。
- 当系统需要执行访问Google日历的某些操作时,我使用以下调用创建一个GoogleCredential对象:
GoogleCredential c= new GoogleCredential.Builder().setJsonFactory(Constants.JSON_FACTORY)
.setTransport(Constants.HTTP_TRANSPORT).setClientSecrets(Constants.GOOGLE_CLIENT_ID, Constants.GOOGLE_CLIENT_SECRET).build()
.setAccessToken(user.getAccessToken()).setRefreshToken(user.getRefreshToken());
然后Ans要求提供服务。 但在最后一种情况下,我收到错误报告403代码和“权限不足”消息。
我已经检查过我在GoogleCredential中设置的存储访问和刷新令牌与第一次使用“代码”获取GoogleCredential时收到的相同。 我也在网上搜索了很多但没有解决方案可行。 我真的被阻止了这个错误。 提前感谢您的帮助,如果我错过了指定的内容,或者在提问时我犯了一些错误,请抱歉。
如果我理解您正确描述的问题,可能需要增量授权: https : //developers.google.com/accounts/docs/OAuth2WebServer#incrementalAuth
具体来说,将include_granted_scopes = true添加到您的授权URL,这将导致生成的令牌包含所有迄今授予的授权的总和。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.