簡體   English   中英

如何為用戶的github帳戶設置密碼?

[英]How to set password for user's github account?

我將GitHub OAuth集成到我的rails應用程序中,用戶可以通過github帳戶登錄我的rails應用程序,我不想使用第三方的gem,例如OmniAuth,warden-github等。

if !authenticated?
  authenticate!
else
  access_token = session[:access_token]
  scopes = []
  begin
    auth_result = RestClient.get('https://api.github.com/user',
                                 {:params => {:access_token => access_token},
                                  :accept => :json})
  rescue => e
    session[:access_token] = nil
    return authenticate!
  end

  auth_result = JSON.parse(auth_result)

  user = User.find_by(github_id: auth_result["id"])
  if not user
    user_attr = {user_name: auth_result["login"],
                 email: auth_result["email"],
                 github_id: auth_result["id"],
                 avatar_url: auth_result["avatar_url"],
                 location: auth_result["location"],
                }
    user = User.create!(user_attr)
    session[:user_id] = user.id
  end

  if scopes.include? 'user:email'
    auth_result['private_emails'] =
      JSON.parse(RestClient.get('https://api.github.com/user/emails',
                     {:params => {:access_token => access_token},
                      :accept => :json}))
  end

  redirect_to user_path(user)

如果用戶通過github帳戶登錄我的應用,我將在數據庫中創建用戶記錄。 我有兩個問題:

  1. 我應該在數據庫中創建用戶記錄嗎?
  2. 如果創建用戶,則必須提供密碼和password_confirmation,否則驗證將失敗,如何跳過密碼驗證或生成隨機密碼?

我使用SecureRandom庫生成隨機字符串作為密碼。

http://ruby-doc.org/stdlib-2.1.2/libdoc/securerandom/rdoc/SecureRandom.html

暫無
暫無

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

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