fun*_*bro 3 google-app-engine google-spreadsheet-api google-drive-api google-oauth
我有一个appengine应用程序需要访问Google云端硬盘上的单个硬编码电子表格.
到目前为止,我已经实现了以下目标:
SpreadsheetService service = new SpreadsheetService("myapp");
service.setUserCredentials("myusername@gmail.com", "myhardcodedpassword");
Run Code Online (Sandbox Code Playgroud)
当我今天尝试使用新用户时,InvalidCredentialsException即使用户名和密码肯定是正确的.我的收件箱中收到一封电子邮件,说我已经阻止了登录,但是似乎没有办法再次启用它们.
我也知道在源代码中硬编码密码是不好的做法.
但是,我已经在网上非常广泛地阅读了如何为此启用OAuth/OAuth2,并最终浪费了数小时和数小时拼接来自博客,stackoverflow答案等的信息片段,但无济于事.
理想情况下,解决方案将涉及生成长期访问令牌的初始过程,然后可以将其硬编码到应用程序中.
我想要一个明确的步骤列表,了解如何实现这一目标?
pin*_*yid 11
编辑:由于Google重新设计了API控制台,以下步骤的详细信息已更改 - 请参阅注释
好的,这里一步一步走
刷新令牌相当于您长期存在的用户名/密码,因此这就是您需要硬编码(或存储您的应用程序可以检索它的安全地点).
当您需要访问Google Spreadsheets时,您将致电
POST https://accounts.google.com/o/oauth2/token
content-type: application/x-www-form-urlencoded
client_secret=************&grant_type=refresh_token&refresh_token=1%2xxxxxxxxxx&client_id=999999999999.apps.googleusercontent.com
Run Code Online (Sandbox Code Playgroud)
这将返回一个访问令牌
{
"access_token": "ya29.yyyyyyyyyyyyyyyyyy",
"token_type": "Bearer",
"expires_in": 3600
}
Run Code Online (Sandbox Code Playgroud)
无论何时访问电子表格API,都将访问令牌放入http标头中
Authorization: Bearer ya29.yyyyyyyyyyyyyyyyy
Run Code Online (Sandbox Code Playgroud)
而且你已经完成了
| 归档时间: |
|
| 查看次数: |
38711 次 |
| 最近记录: |