2016-08-24 49 views
1

我想注册新用户在REST API,并请求应该是这样:我怎么发送HTTP标头“grant_type = client_credentials”

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

这些问题需要针对您所使用的公司的API – zerohero

回答

1

问题1:通常情况下,您应该使用公共令牌(本例中为基本oauth令牌),并且当此令牌过期时,您应该更新它。在你的api的文档中,它应该存在过期令牌并执行令牌刷新的时间。

问题2:寻找你的信息“grant_type = client_credentials &范围=写”这是一个身体PARAM请求(与主体POST请求)

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_idclient_secret)。您通常通过向API提供者注册您的客户端(应用程序)来获取此信息。 所以答案是肯定的,只要信息(client_id/secret)不会改变/过期,它就应该是静态的。

问题2:该grant_type ....是一个参数请求或体(I应与体或作为一个参数发送它)

OAuth spec指定grant_type参数写在HTTP请求实体主体中,所以应该在请求体内发送。但是,有些实现允许在URL中传递grant_type参数。