谷歌OAuth2.0支持资源所有者密码凭证流的OAuth流程吗?

7

你好,互联网上的善良人们。

Google OAuth2.0是否支持资源所有者密码凭证流的OAuth流程?如果是这样的话:

A.) 这种类型的OAuth流程能否在Google OAuth2 Playground上进行测试?

B.) 是否有Google OAuth2.0和Google APIs中“资源所有者密码凭证流”的示例?

根据最近在奥斯陆NDC 2013年的OAuth演示,这个主题的流程显然完全跳过了授权端点,直接与OAuth2服务器的令牌端点通信。请求语法咒语应该看起来像这样:

grant_type=password&
scope=resource&
user_name=owner&
password=password&

我的理解是,资源所有者密码凭证流程适用于后端企业类型的信任应用程序(其中名称-密码对可以安全地存储)。
这种OAuth流程不需要任何最终用户同意交互(没有浏览器弹出窗口来接受,然后获得返回的授权码等)。在此主题流程中,访问和刷新令牌直接返回,再次强调:无需最终用户交互(尽管需要输入用户名和密码)。
查看Google OAuth文档(链接到Google OAuth2文档),似乎没有任何类似于资源密码凭证流程的内容,但不确定这是否意味着Google明确不支持它。
非常感谢您提供的任何帮助或建议。
提前致谢。
2个回答

10

亲爱的网络友好人士,

确实在 Google 上不支持资源所有者密码凭证流程(Resource Owner Password Credential Flow),但 Google 建议您使用安装应用程序流程(Installed Application Flow),其在以下文档中有所描述:https://developers.google.com/accounts/docs/OAuth2InstalledApp

您需要在 Google 控制台 (https://code.google.com/apis/console) 中创建一个已安装的应用程序,在那里,您可以获取 client_id 并构建带有参数的 GET 请求,形式如下:

https://accounts.google.com/o/oauth2/auth\?
scope\=<scope>\&
redirect_uri\=urn:ietf:wg:oauth:2.0:oob\&
response_type\=code\&
client_id\=<client_id fetched from google console>

您需要构建此URL并在浏览器中导航到它,允许应用程序访问,然后谷歌会给您一个代码,我认为您可以使用它来获取凭据。 您可以使用这些凭据获取访问令牌并刷新它,这些凭据是永久的。 这里有一个很好的例子。请注意,您只需要手动获取这些凭据一次,然后将这些凭据保存在某个地方并继续使用它们获取/刷新令牌。

希望这可以帮助您!


这不对。如果你在说授权码的话,它只有几分钟的有效期。你可以使用它来获取令牌和刷新令牌,然后直接在你的应用程序中使用。然而,最大的问题是,除非你的应用程序已注册并验证,否则刷新令牌将在7天后过期。所以,最简单的方法就是让你的应用程序通过验证。 - David Ho

7
据我所知,不行。OAuth 2.0 是用于 Google 帐户的,Google 会进行身份验证。

只是为了强调Tim所说的,资源所有者密码凭据不受支持。当然不支持。 - mariuss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接