oauth-2.0 Ruby实现oauth2客户端凭证流

wz8daaqr  于 2022-10-31  发布在  Ruby
关注(0)|答案(1)|浏览(275)

我是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...

有什么办法吗我现在有点绝望了
任何帮助都将不胜感激!

sg2wtvxw

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文档以获得该部分的帮助。

相关问题