【问题标题】:Koala and Omniauth-twitter don't go togetherKoala 和 Omniauth-twitter 不能同时使用
【发布时间】:2013-11-30 05:55:59
【问题描述】:

我在考拉的 github 上发了同样的内容,但没有人回复我,所以我放在这里。

所以当我尝试使用 Omniauth 登录 Twitter 时:

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

我还有一个 Koala 登录 Facebook 我不使用 Omniauth 登录 Facebook 我只使用 Omniauth 登录 twitter,如果我不需要 Koala 就可以,但如果我同时拥有它会生成:

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

我使用的是 1.6.0 版的 Koala 和 Sinatra。

我的代码是:

#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

提前谢谢大家。

【问题讨论】:

  • 我想在推特进度前删除红宝石并在登录后激活,但我认为这无法做到。

标签: ruby twitter sinatra omniauth koala


【解决方案1】:

我使用另一个名为 twitter_oauth 的 gem 来登录 twitter,你可以找到 here

与 sinatra 一起使用非常简单:

#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

不是最好的解决方案,但它是一个,对我来说有效!

还是谢谢。

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    相关资源
    最近更新 更多