我是Ruby新手,我正在尝试实现一个带有客户端凭证流的oauth2。
我已经找到了“ouath 2”宝石,但这需要一个redirect_uri
,而我没有。
Here is the gem。
这是我正在尝试实现的
secret_id = 'this-is-a-secret-id'
token_id = 'this-is-a-token-id'
scope = 'such-a-good-scope'
grant_type = 'client_credentials'
@client = nil
# Get access token
def GetAccessToken
HttpRequest request = HttpRequest::Post("https://awesome-page.com/oauth/token")
request.content = {
{ "client_id" => token_id },
{ "client_secret" => secret_id }
{ 'grant_type' => grant_type },
{ 'scope' => scope}
}
response = request.send
json = response.content
accessToken = JsonConvert.DeserializeObject<Token>(json)
@client = Client.new(bearer: accessToken)
end
# Refresh token
def RefreshToken
HttpRequest request = HttpRequest::Post("https://awesome-page.com/oauth/token")
request.content = {
{ "client_id" => token_id },
{ "client_secret" => secret_id }
{ 'grant_type' => grant_type },
{ 'refresh_token' => scope}
}
response = request.send
json = response.content
accessToken = JsonConvert.DeserializeObject<Token>(json)
@client = Client.new(bearer: accessToken)
end
# End then implementing the "getting the resources with the client" part and so on...
有什么办法吗我现在有点绝望了
任何帮助都将不胜感激!
1条答案
按热度按时间sg2wtvxw1#
你的做法有点不对。使用Oauth2 gem,你需要:
1.使用您的客户端ID、密码、作用域初始化新的
Oauth2::Client
,并定义令牌和重定向URL(这是您的应用中的URL,用户登录时会被发送回该URL。不用于客户端凭据流,因为它用于服务器到服务器的通信)1.调用
token = client.client_credentials.get_token
。这会将令牌设置为它获取的AccessToken。1.然后调用
token.get(‘https://your-url.com/path/to/resource’)
-或post/patch/delete。查看repo中的access_token.rb文件,查看可以调用的方法。它们还接受一系列参数,用于传递附加的头或主体有效负载等内容。它基于法拉第,因此您可以随时查找Faraday文档以获得该部分的帮助。