【问题标题】:Does Google OAuth2.0 support grant_type=password?Google OAuth2.0 是否支持 grant_type=password?
【发布时间】:2019-01-23 19:43:49
【问题描述】:

这是我的命令

curl https://accounts.google.com/o/oauth2/token -d "client_id=111111111111%2D8pc07m34pj5eb5nid0u5n9fgs5vrndpm%2Eapps%2Egoogleusercontent%2Ecom&grant_type=password&username=123456%2E123%40gmail%2Ecom&password=123456&scope=https%3A%2F%2Fwww%2Egoogleapis%2Ecom%2Fauth%2Fcalendar&redirect_url=https%3A%2F%2Fwww%2Egoogle%2Ecom"

但我不断得到:

{
  "error" : "invalid_request"
}

我正在尝试编写一个可以读取命令行中指定的任何 gmail 帐户的日历数据的应用程序:

./foo gmailID@gmail.com password

但我不知道我的 foo 如何使用 gmailID 和密码来获取没有用户交互的令牌(即,打开 url 并单击“接受”),因此我可以使用该令牌调用 Google Calendar APIs读取该 gmail 帐户的日历数据。我是新来的。我至少在正确的轨道上吗?

【问题讨论】:

标签: oauth-2.0 google-api google-oauth google-calendar-api


【解决方案1】:

您不能在grant_type 上发送邮件和密码,并且您不能在未经用户许可的情况下代表用户提出请求,需要他们的同意。

如果您想代表用户发出请求(当他们不在您的应用程序中时),您需要实现离线访问。我建议你看看this reference

一旦用户接受使用您的应用程序的权限,Google 将生成一个您需要存储在数据库中的 refreshToken。使用该 refreshToken,您将能够生成新的访问令牌,并且您将使用这些令牌来执行您的请求。

【讨论】:

  • 是的,我做到了。但是为什么 iphone 和 android 可以通过让用户输入 id 和密码来访问日历数据呢?这就是我想做的事情
  • 我从未尝试过该实现,您能否提供解释它的文档链接?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 2013-09-09
  • 2018-12-26
  • 2014-10-13
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多