/ / Usando dois aplicativos do Twitter com o Oauth para que eu possa ter duas chamadas de retorno separadas - ruby-on-rails-3, twitter, callback, omniauth, provedor

Usando dois aplicativos do Twitter com Oauth para que eu possa ter dois retornos de chamada separados - ruby-on-rails-3, twitter, retorno de chamada, omniauth, provedor

Minha aplicação rails precisa usar o Twitter Oauthduas vezes para dois propósitos diferentes. O primeiro é o login típico do usuário. O segundo é para adicionar contas para que os tweets possam ser agendados com antecedência. Pense no Hootsuite como um exemplo. Você pode fazer o login com o Facebook, bem como conectar várias contas do Facebook. Isso requer dois call backs separados.

Para criar retornos de chamada com funções exclusivas, concluí que posso criar apenas dois aplicativos diferentes, cada um com um URL de retorno de chamada separado.

No entanto, no arquivo omniauth.rb, há apenas uma maneira de se conectar ao provedor do Twitter.

Rails.application.middleware.use OmniAuth::Builder do
provider :twitter, ENV["TWITTER_KEY"], ENV["TWITTER_SECRET"]
end

Não funciona para repetir assim:

 Rails.application.middleware.use OmniAuth::Builder do
provider :twitter, ENV["TWITTER_KEY"], ENV["TWITTER_SECRET"]
end
Rails.application.middleware.use OmniAuth::Builder do
provider :twitter, ENV["TWITTERUSER_KEY"], ENV["TWITTERUSER_SECRET"]
end

Porque não há como distinguir qual callback usar. Eu não encontrei uma maneira de tornar o provedor ": twitter2", por exemplo, porque ele é incorporado ao Omniauth.

Alguém encontrou uma solução para usar múltiplosChamadas de retorno do Twitter no mesmo aplicativo? Feliz em ver uma solução com qualquer Oauth que precise ser usado duas vezes para finalidades diferentes, por exemplo, Facebook ou Google Plus

Obrigado!

Respostas:

0 para resposta № 1

Se você quiser usar omniauth para ambos os casos de uso,você provavelmente não pode fazer isso sem substituições significativas, pois elas se chocarão. Você já pensou em usar uma nova gema do twitter para fazer o auth com twitter para postar os tweets?


0 para resposta № 2

Existe uma maneira de fazer isso, definindo um caminho de retorno de chamada e um nome para o provedor.

Rails.application.middleware.use OmniAuth::Builder do
provider :twitter, ENV["TWITTER_KEY"], ENV["TWITTER_SECRET"], callback_path: "/omniauth/twitter1/callback", name: "twitter1"
provider :twitter, ENV["TWITTERUSER_KEY"], ENV["TWITTERUSER_SECRET"], callback_path: "/omniauth/twitter2/callback", name: "twitter2"
end

Então você usa o nome para ligar para um ou outro provedor, como www.mywonderfulwebsite.com/omniauth/twitter1

Espero que ajude