簡體   English   中英

如何在omniauth 策略中為uid 指定自定義字段?

[英]How do I specify a custom field for uid in an omniauth strategy?

我正在構建一個omniauth 策略來使用Suunto API。 對他們的token_url的請求會返回一個包含user鍵/值的響應:

{
  "access_token":"ACCESS_TOKEN",
  "token_type":"bearer",
  "refresh_token":"REFRESH_TOKEN",
  "expires_in":86399,
  "scope":"workout",
  "ukv":"1",
  "uk":"SOME_VALUE",
  "user":"UID",
  "jti":"SOME_VALUE"
}

這意味着用作uid值。

基於聲明性配置文檔,我嘗試了這個,但沒有運氣:

option :fields, [:user]
option :uid_field, :user

這不起作用,因為請求中不存在該字段,它位於token_url響應中:

uid do
  request.params[options.uid_field.to_s]
end

Defining the Callback Phase 文檔有一個關於credentials的注釋,但沒有使用示例。

我應該在我的策略中添加/編輯什么來告訴它為從令牌請求響應返回的user設置uid值?

啊。 我想通了:這進入了策略:

uid { raw_info["user"] }

def raw_info
  @raw_info ||= access_token
end

raw_info中, access_token是我在問題開頭包含的 hash 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM