omn​​iauth OAuthException&OAuth :: Unauthorized

私はomniauth 1.0をインストールしました。また、私はoauth-0.4.5、oauth2-0.5.1、omniauth-facebook-1.0.0、omniauth-twitter-0.0.6を持っています。

omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :developer unless Rails.env.production?
  provider :facebook, ENV['167257285348131'],     ENV['c8c722f697scb2afcf1600286c6212a9'],     :scope => 'email,offline_access,read_stream', :display => 'popup'
  provider :twitter, ENV['fma2L22ObJCW52QrL7uew'], ENV['4aZfhCAOdiS7ap8pHJ7I1OZslFwVWWLiAMVpYUI']

end

session_controller.rb
class SessionsController < ApplicationController
require 'omniauth-facebook'
require 'omniauth-twitter'
require 'omniauth'

def create
    @user = User.find_or_create_from_auth_hash(auth_hash)
    self.current_user = @user
    redirect_to '/'
end



def auth_hash
request.env['omniauth.auth']
end

end

また、私は追加する      'omniauth'      「omniauth-facebook」     「omniauth-twitter」gemfileへの宝石

2つの問題があります。

  1. http:// localhost:3000/auth/facebook にアクセスすると { "error":{   "message": "client_idパラメータがありません。"、   "type": "OAuthException" } }

And the link graph.facebook.com/oauth/authorize?response_type=code&client_id=&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Ffacebook%2Fcallback&parse=query&scope=email%2Coffline_access%2Cread_stream&display=popup And there is no client_id!!!

  1. http:// localhost:3000/auth/twitter にアクセスすると、OAuth ::無許可

401 Unauthorized

何か案は?

8
私はまったく同じ問題を抱えていた!なぜENV []がこれを破るのか知っていますか?私の場合は、facebookではうまく動作しますが、twitterではうまく動作しません。
追加された 著者 Ashitaka,
@Vina ENV []はそれを壊します。 ""だけを使ってみてください。例:プロバイダ:facebook、 '167257285348131'、 'c8c722f697scb2afcf1600286c6212a9'
追加された 著者 Alex D.,
あなたはFacebookのエラーを解決しましたか?もしそうなら、私はこの問題を回避することができますか?同じエラーメッセージが表示されます。文字列パラメータを照会するためにclient_idを手動で追加すると解決できます
追加された 著者 Vina,
ありがとう、それは動作します!私はウェッブリックを再起動する必要があるようです。 :D
追加された 著者 Vina,
サーバを起動する前に、 source〜/ .profile (またはenv変数を定義した場所)を試してください。これは一度だけ行う必要があります。
追加された 著者 beno1604,

3 答え

アレックスD.は、ENV []がそれを破るという点で正しいです。異なる環境で異なるキーを使用するようにomniauth.rbを作成するには、次のように入力します。

provider :twitter, TWITTER_KEY, TWITTER_SECRET

omn​​iauth.rbで

環境設定ファイル(config/environments/development.rbなど)に、その環境に使用したいキーを置きます。

config/environments/development.rb:

TWITTER_KEY = 'aaaaaaa'
TWITTER_SECRET = 'aaaabbbbbb'

config/environments/production.rb:

TWITTER_KEY = 'ccccccc'
TWITTER_SECRET = 'ccccdddddd'
15
追加された
私はあなたのgitignoreファイルにこれらのファイルを追加します。それ以外の場合は誰でもあなたのレポで見ることができるたくさんの鍵がありますか?
追加された 著者 Richlewis,
@ジェフ・スティルル:これはKEYとAPI_SECRETまたは環境変数にアプローチするより良い方法ですか?私は議論の余地がある話題だと知っていますが、私は現在唯一の開発者です。どちらが良い方法ですか?
追加された 著者 Jatin Ganhotra,

ENV['something']

あなたの環境に「何か」を求めているので、期待しています。

something = '12345'

あなたはそのようにする必要があります

export AUTH_FB_KEY='....'
export AUTH_FB_SECRET='...'

確認する

env

あなたの設定を更新する

provider :facebook, ENV['AUTH_FB_KEY'], ENV['AUTH_FB_SECRET']

あなたが英雄を使うなら

heroku config:add AUTH_FB_KEY='....'
2
追加された

omn​​iauth 1.0で改訂された変更点 - https://github.com/intridea/omniauth

OmniAuth 1.0 has several breaking changes from version 0.x. You can set the dependency to ~> 0.3.2 if you do not wish to make the more difficult upgrade. See the wiki for more information.

私はomniauthを0.3.2に戻してみるでしょう:

gem install omniauth --version '~> 0.3.2'

バンドルを使用している場合は、Gemfile内で:

gem omniauth, '~> 0.3.2'
0
追加された
ああ、それを聞いて申し訳ありません。私は同じような問題を抱えていましたが、0.3.2に戻って私のために解決しました。私は、他の関連する宝石の履歴ログをチェックして、すべてが甘く見えるようにしますか?
追加された 著者 gef,
聞いてよかった:)
追加された 著者 gef,
私は0.3.2に戻った。驚いたことに私は同じ問題を抱えています。
追加された 著者 Alex D.,
ありがとうございますが、私はomniauth.rbでその理由を発見しました。 ENV []がなければ動作します。
追加された 著者 Alex D.,