0

OAuth2でYouTubeログインを設定しました。ユーザー登録が成功したら、ユーザーの性別と場所をデータベースに保存したいと思います。

OAuthドキュメントhttps://developers.google.com/accounts/docs/OAuth2Login#userinfocallを確認する と、名前、メールアドレス、プロフィール写真などとともに、ユーザーの性別や場所にアクセスできることがわかります。

以下は、ユーザー情報をデータベースに保存するための私のコードです

user.rb

def self.from_omniauth(auth)
    where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.name = auth.info.name
      user.email = auth.info.email
      user.picture = auth.info.image
      user.gender = auth.info.gender
      user.country = auth.info.locale
      user.oauth_token = auth.credentials.token
      user.oauth_expires_at = Time.at(auth.credentials.expires_at)
      user.save! 
      end
     end

ただし、auth.info.USER_INFO構成を使用しても、これらの値はデータベースに保存されないようです。私は何かが足りないのですか?

これが私のアプリがスコープなしで要求しているパラメーターです。 ここに画像の説明を入力してください

アップデート

userinfo.profileパラメーターに追加のスコープを渡すことで、これを機能させることができました。スペースで区切られたコンマを含まない完全なURLを含めることを忘れないでください。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :youtube, YOUTUBE_KEY, YOUTUBE_SECRET, { :scope => "https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com", access_type: 'offline', approval_prompt: '' }
end

これは次の権限を取得しました ここに画像の説明を入力してください

4

1 に答える 1

2

OAuthスコープを要求する場所にコードを投稿できますか?私の推測では、あなたはプロファイルスコープを求めていません。このサイトをチェックしてください:

https://developers.google.com/oauthplayground/

YouTubeサンプルコードを使用しているだけの場合は、プロファイルスコープを要求していない可能性があります。

https://www.googleapis.com/auth/userinfo.profile

authページにアクセスすると、このスコープを要求しているかどうかがわかります。これは、authページに次のように表示されるためです。

「GoogleOAuth2.0Playgroundは、次の許可を求めています。アカウントに関する基本情報を表示する名前、公開プロフィールのURL、写真を表示する性別と生年月日を表示する国、言語、タイムゾーンを表示する」

スクリーンショットを添付しました。ここに画像の説明を入力してくださいこれが表示されない場合は、スコープを構成している場所を確認し、これをOAUthスコープのリストに追加して承認します。

于 2013-01-14T15:15:50.167 に答える