2

私はdeviseでomniauth-twitter gemを使用しており、それを実装する方法についてrailscastに従いました。

すべて正常に動作しているようです - Twitter のリンクでサインアップをクリックすると、Twitter にリダイレクトされます。[ログイン] をクリックすると、リダイレクトされますが、「無効なため、Twitter から認証できませんでした」というエラー メッセージが表示されます。資格"。

私は完全に途方に暮れており、消費者の位置と私がチェックした秘密鍵を混同するなどの明らかな解決策はありますが、それらはすべて問題ありません。

omn​​iauth-devise に関する SO のいくつかの異なるバリエーションを読んでみましたが、どれも役に立ちませんでした。

関連するコードは次のとおりです。

 devise_scope :user do
    get 'sign_up', to: 'members#new', controllers: {registrations: "members"}
    get 'partners/sign_up', to: 'content_partners#new', controllers: {registrations: "content_partners"}
  end
  devise_for :users, controllers: {omniauth_callbacks: "omniauth_callbacks"}

config/initializers/device ファイルから:

 require "omniauth-twitter"
   config.omniauth :twitter, 'CONSUMER_KEY', 'CONSUMER_SECRET'

私の宝石ファイル:

gem "omniauth", "~> 1.1.1"
gem "omniauth-twitter", "~> 0.0.14"

私のコントローラー:

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def all
    user = User.from_omniauth(request.env["omniauth.auth"])
    if user.persisted?
      flash.notice = "Signed in!"
      sign_in_and_redirect user
    else
      session["devise.user_attributes"] = user.attributes
      redirect_to sign_up_path
    end
  end
  alias_method :twitter, :all
end

私のユーザーモデル:

  def self.from_omniauth(auth)
    where(auth.slice(:provider, :uid)).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
    end
  end

  def self.new_with_session(params, session)
    if session["devise.user_attributes"]
      new(session["devise.user_attributes"], without_protection: true) do |user|
        user.attributes = params
        user.valid?
      end
    else
      super
    end
  end

私のsign_upビューファイルのリンク:

<%= link_to "or Sign up with Twitter", user_omniauth_authorize_path(:twitter) %>

最後に、ロガーから取得しているものは次のとおりです。

Started GET "/users/auth/twitter" for 127.0.0.1 at 2012-12-11 15:54:01 +0000
(twitter) Callback phase initiated.


Started GET "/users/auth/twitter/callback?oauth_token=****blanked****&oauth_verifier=****blanked****" for 127.0.0.1 at 2012-12-11 15:54:03 +0000
Processing by OmniauthCallbacksController#twitter as HTML
  Parameters: {"oauth_token"=>"****blanked****", "oauth_verifier"=>"****blanked****"}
  User Load (0.5ms)  SELECT "users".* FROM "users" WHERE "users"."provider" = 'twitter' AND "users"."uid" = '803184474' LIMIT 1
   (0.1ms)  BEGIN
  User Exists (0.4ms)  SELECT 1 AS one FROM "users" WHERE "users"."email" IS NULL LIMIT 1
   (0.2ms)  ROLLBACK
Redirected to http://localhost:3000/sign_up
Completed 302 Found in 8ms (ActiveRecord: 1.3ms)

誰でもこれで私を助けることができますか?!

4

0 に答える 0