Google OAuth2.0是否支持grant_type = password?

时间:2018-08-16 19:15:00

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

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密码

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

1 个答案:

答案 0 :(得分:1)

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

如果要代表用户发出请求(当应用程序中不存在请求时),则需要实现脱机访问。我建议您看看this reference

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