Как мне указать настраиваемое поле для uid в стратегии omniauth? - PullRequest
1 голос
/ 21 апреля 2020

Я строю универсальную стратегию для работы с 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

В документе Определение фазы обратного вызова имеется примечание о credentials, но нет примера использования.

Что я должен добавить / отредактировать в моем стратегия, которая скажет ему установить uid значение равным user, которое возвращается из ответа на запрос токена?

1 Ответ

1 голос
/ 21 апреля 2020

Ах! Я понял. Это относится к стратегии:

uid { raw_info["user"] }

def raw_info
  @raw_info ||= access_token
end

В этот момент в raw_info, access_token - это ха sh, который я включил в открытие моего вопроса.

...