在没有 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 创建一个应用程序

OAuth 2.0 - 自己网站的帐户管理

无法使用 OAuth2 为 AdWords 帐户生成刷新令牌

AppAuth iOS。用户在我自己的OAuth2服务器中注册帐户后如何保存令牌信息

使用服务帐户 oauth2client.client.CryptoUnavailableError 的 Google API 访问:没有可用的加密库

Alexa 帐户与 Google OAuth 的链接错误