我正在为Google Assistant创建一个智能家居操作,该操作将与我的REST API服务器集成,但我在OAuth 2.0步骤中遇到了问题,本指南中对此进行了详细介绍
显然,需要两个终点:
1.返回授权代码的授权终结点
1.一个令牌交换端点,它接受身份验证代码并返回访问和刷新令牌
我了解构建这些端点的详细信息,但有一个例外。在授权代码端点中,您必须:
1.检查使用者是否已登入您的服务。如果使用者未登入,请完成您服务的登入或注册流程。
1.生成授权码,供Google用于访问您的API。授权码可以是任何字符串值,但它必须唯一地代表用户、令牌所针对的客户端以及代码的过期时间,并且不能猜测。您通常会发出大约10分钟后过期的授权码。
这两个步骤都要求OAuth服务器具有关于用户的信息,但是对端点的调用(由Google进行)仅提供以下内容:
- 客户端ID
- 重定向URI
- 状态
- 显示器
- 响应类型
- 用户区域设置
据我所知,这些都不允许您检索用户。
这里是否遗漏了什么,或者我是否可以跳过步骤2(登录用户),生成授权代码(步骤3),而不在代码中表示用户?
我认为auth代码需要包含用户信息,这样当它被发送到令牌交换端点时,我们就可以知道要为哪个用户生成令牌。
2条答案
按热度按时间8ehkhllq1#
我已经使用了OAuth 2.0的keyclock服务器,并使用授权码授权类型进行身份验证。
在具有授权码授权类型的OAuth 2.0中,有两种类型的URL,第一种是Auth URL,第二种是访问令牌URL
当Auth URL执行时,它将重定向到登录页面,在该页面中,我们需要使用用户名和密码登录,并将给予auth代码
然后,Google将使用该代码创建一个访问令牌,并使用这些令牌访问资源服务,如SYNC、QUERY、EXECUTE和DISCONNECT。
j9per5c42#
OAuth2.0不包括身份验证过程,实际上它是委托授权框架。但在实际情况中,您的系统需要知道您将向谁的资源授予访问权限,除非您只有一组资源并且不属于任何特定用户(在这种情况下,您可以跳过身份验证/登录页面)。
据我所知,这些都不允许您检索用户。
这里是否遗漏了什么,或者我是否可以跳过步骤2(登录用户),生成授权代码(步骤3),而不在代码中表示用户?
我认为auth代码需要包含用户信息,这样当它被发送到令牌交换端点时,我们就可以知道要为哪个用户生成令牌。