2013-11-16 5 views
0

Я отправил то же самое в github Koala, но никто не ответил мне, поэтому я поставил здесь.Koala и Omniauth-twitter не идут вместе

Так что, когда я пытаюсь войти с Twitter с OmniAuth:

I, [2013-11-15T18:57:12.371006 #28412] INFO -- omniauth: (twitter) Request phase  initiated. 
127.0.0.1 - - [15/Nov/2013 18:57:13] "GET /auth/twitter HTTP/1.1" 500 144366 0.9355 

Я также логин Коала на Facebook Я не использую OmniAuth для Facebook Я просто использовать OmniAuth для твиттера, если я не требуют Коала это нормально, но если у меня есть и он генерирует:

undefined method `[]=' for #<Koala::Facebook::OAuth:0x00000001b03348> 
~>In oauth.rb line 31 

Я использую 1.6.0 версию Koala и Синатры.

Мой код:

#Facebook 
get '/loginfb' do 
    session['oauth'] = Koala::Facebook::OAuth.new($APP_ID, $APP_SECRET, "#{request.base_url}/callbackfb") 
    redirect session['oauth'].url_for_oauth_code(:permissions => ["publish_stream"]) 
end 

get '/callbackfb' do 
    session['access_token'] = session['oauth'].get_access_token(params[:code]) 
    registerUserFB() #Just register the user function 
    redirect '/accounts' 
end 

#Twitter 
#By defualt logs in with /auth/twitter 
get '/auth/twitter/callback' do 
    erb "<h1>#{params[:provider]}</h1><pre>#{JSON.pretty_generate(request.env['omniauth.auth'])}</pre>" 
    p auth['credentials']['token'] 
end 

get '/auth/failure' do 
    erb "<h1>Authentication Failed:</h1><h3>message:<h3> <pre>#{params}</pre>" 
end 

Спасибо, ребята заранее.

+0

Я думал, что удалю рубин перед прохождением щебета и активируется после входа в систему, но я думаю, что этого не может быть сделано. –

ответ

0

Я использовал другой драгоценный камень для входа в твиттере под названием twitter_oauth йо можно найти here

Для использования с Синатрой довольно прост:

#Sinatra stuff 
require 'twitter_oauth' 
#more sinatra stuff 

$CONSUMER_KEY = '32423...' 
$CONSUMER_SECRET = '...adads...' 
$CALLBACK_URL = 'http://....' 

tw_client = TwitterOAuth::Client.new(
    :consumer_key => $CONSUMER_KEY, 
    :consumer_secret => $CONSUMER_SECRET 
) 

$request_token = tw_client.request_token(:oauth_callback => $CALLBACK_URL) 

#sinatra routes 
get '/logintw' do 
    redirect $request_token.authorize_url 
end 

get '/callbacktw' do 
    @access_token = $request_token.get_access_token :oauth_verifier =>  params[:oauth_verifier] 
    p @access_token.params[:oauth_token] 
    p @access_token.params[:oauth_token_secret] 
    p @access_token.params[:screen_name] 
    p @access_token.params[:user_id] 
    redirect '/accounts' 
end 
#more sinatra routes 

не является лучшим решением, но это один и для меня работает!

Спасибо в любом случае.

Смежные вопросы