Oauth 2.0 RedditAPI oauth身份验证长生不老药

Oauth 2.0 RedditAPI oauth身份验证长生不老药,oauth-2.0,elixir,reddit,httpoison,Oauth 2.0,Elixir,Reddit,Httpoison,我正在尝试检索访问令牌。我已经设法让用户授权我的应用程序,现在我正在尝试检索访问令牌。 以下是reddit oauth2文档: 下面是我正在使用的HTTPoison post请求: 我不知道如何发出post请求,客户id是在正文还是在标题等处 def get_oauth_令牌(令牌,状态)do #TODO:将状态与旧状态进行比较以防止恶意用户 cfg=config() url='1〕https://www.reddit.com/api/v1/access_token' 正文=%{ 授权类型:“授

我正在尝试检索访问令牌。我已经设法让用户授权我的应用程序,现在我正在尝试检索访问令牌。 以下是reddit oauth2文档: 下面是我正在使用的HTTPoison post请求:

我不知道如何发出post请求,客户id是在正文还是在标题等处

def get_oauth_令牌(令牌,状态)do
#TODO:将状态与旧状态进行比较以防止恶意用户
cfg=config()
url='1〕https://www.reddit.com/api/v1/access_token'
正文=%{
授权类型:“授权代码”,
代码:token,
重定向\u uri:cfg[:重定向\u uri],
客户机识别码:cfg[:客户机识别码],
客户端密码:cfg[:客户端密码]
}
|>Jason.encode()
|>ok()
HTTPoison.post(url、正文、[
{“接受”、“应用程序/json”},
{“内容类型”,“应用程序/x-www-form-urlencoded”},
])
结束
defpok({:ok,response}),do:response
我的身份代码是401

预期结果

{
“访问令牌”:您的访问令牌,
“令牌类型”:“承载者”,
“expires_in”:秒,
“范围”:范围字符串,
“刷新令牌”:您的刷新令牌
}

API需要
应用程序/x-www-form-urlencoded
,因此您不应该将其编码为JSON

根据,您还需要使用HTTP基本身份验证将
客户机id
客户机机密
编码到
授权
头中

url=”https://www.reddit.com/api/v1/access_token"
标题=[
{“内容类型”,“应用程序/x-www-form-urlencoded”},
{“Authorization”,“Basic”Base.encode64(#{cfg.client_id}:#{cfg.client_secret}”)}
]
数据=[
授权类型:“授权代码”,
代码:token,
重定向\u uri:cfg.redirect\u uri
]
post(url,{:form,data},头)
查看的文档,了解发布url编码表单的
{:form,data}
语法