我正在尝试在REST API上注册新用户,请求应该是这样的:
POST /api/oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic YW75cm9pZC12tb28Jp8bGU6c2Vj
grant_type=client_credentials&scope=write
问题1:授权代码是静态的,每次我请求新用户时都必须相同,或者我每次都要生成一个新的base46代码?
问题2:grant_type ....是参数请求或正文(我应该将其与正文一起发送或作为参数发送)
非常感谢提前!
答案 0 :(得分:1)
问题1:通常您应该使用公共令牌(在本例中为Basic oauth令牌),当此令牌过期时,您应该续订它。在api的文档中,应该存在使令牌到期并执行令牌刷新的时间。
问题2:查看您的信息" grant_type = client_credentials& scope = write"它是一个身体参数请求(是一个带有正文的帖子请求)
答案 1 :(得分:1)
首先,来自您提供的请求代码:
POST /api/oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic YW75cm9pZC12tb28Jp8bGU6c2Vj
grant_type=client_credentials&scope=write
在我看来,请求用于获取客户端(app)访问令牌(使用OAuth Client Credentials Grant
),而不是请求来签署 - 一个用户。所以,我的答案基于这个假设。
问题1 :授权代码是静态的,每次我请求新用户时都必须相同,或者我每次都要生成一个新的base46代码?
对于OAuth Client Credentials Grant
,Authorization
标头包含客户端身份验证信息(例如client_id
和client_secret
)。您通常通过向API提供商注册您的客户端(应用程序)来获取此信息。
所以答案是,是的,只要信息(client_id / secret)没有改变/到期,它就应该是静态的。
问题2 :grant_type ....是参数请求或正文(我应该将其与正文一起发送或作为参数发送)
OAuth spec
指定 grant_type
参数写在HTTP请求实体中,因此应在请求正文中发送。但是,某些实现也允许在url中传递grant_type
参数。