在没有 OAuth 的情况下为自己的帐户使用 Google API
Posted
技术标签:
【中文标题】在没有 OAuth 的情况下为自己的帐户使用 Google API【英文标题】:Using Google API's for one's own account without OAuth 【发布时间】:2014-11-07 02:35:16 【问题描述】:具体来说,我想仅使用 Gmail API 访问我自己的邮件。有没有办法在没有 OAuth 的情况下做到这一点,只需一个 API 密钥和/或客户端 ID 和密码?
使用 API 密钥,例如:
require('googleapis').gmail('v1').users.messages.list( auth: '<KEY>', userId: '<EMAIL>') );
产生以下错误:
errors:
[ domain: 'global',
reason: 'required',
message: 'Login Required',
locationType: 'header',
location: 'Authorization' ],
code: 401,
message: 'Login Required'
我想该消息意味着他们想要一个有效的 OAuth“授权”标头。我会这样做,但我想如果不展示网页是不可能的。
【问题讨论】:
【参考方案1】:对“有没有办法在没有 OAuth 的情况下仅使用 API 密钥和/或客户端 ID 和密码来执行此操作?”的严格回答?没有。
但是,您可以使用 OAuth 实现您想要的。您只需要存储一个 Refresh Token,然后您可以随时使用它来请求 Auth Token 来访问您的 gmail。
为了获取刷新令牌,您可以编写一个简单的 Web 应用程序来执行一次性身份验证,或者按照此处的步骤 How do I authorise an app (web or installed) without user intervention? (canonical ?),它允许您使用 Oauth Playground 执行整个身份验证流程。
【讨论】:
以上是关于在没有 OAuth 的情况下为自己的帐户使用 Google API的主要内容,如果未能解决你的问题,请参考以下文章
在没有 xcode 的情况下为 Apple Watch 创建一个应用程序
无法使用 OAuth2 为 AdWords 帐户生成刷新令牌
AppAuth iOS。用户在我自己的OAuth2服务器中注册帐户后如何保存令牌信息
使用服务帐户 oauth2client.client.CryptoUnavailableError 的 Google API 访问:没有可用的加密库