Como todos nós sabemos, é um dos métodos mais populares de inscrição em muitos sites por meio de outros serviços de terceiros, e neste ponto provavelmente você deve saber como implementar com o omniauth gem. Mas muitas vezes encontramos alguns problemas durante o desenvolvimento desse recurso sofisticado. Aqui estão minhas recomendações
Proteja suas chaves de API
Muitas vezes colocamos nosso código em repositórios de código aberto sem considerar que outras pessoas (com más intenções) poderiam lê-lo, então fazemos algo assim
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, '611798630625', 'c699f703f247ee23ce447850'
end
Não é muito perigoso correr e gritar, basta tomar os cuidados necessários e definir essas variáveis dentro do ambiente dos trilhos
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']
end
Chaves Diferentes para Ambientes
A razão disso é porque alguns provedores de API, como o Facebook, não oferecem suporte a vários retornos de chamada em diferentes urls, então acho que será uma boa prática fazer isso
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, ENV[Rails.env]['TWITTER_KEY'], ENV[Rails.env]['TWITTER_SECRET']
end
sim! Eu sei que é muita configuração, mas isso permite que você trabalhe e teste melhor com seu provedor terceirizado
Google Apps x Google Oauth2
Uma vez que todos têm uma conta do Google, todos querem usá-la (isso porque alguns usuários se sentem mais confiantes para fazer o login através do Google em vez de uma rede social comum como o Facebook ou Twitter). Mas qual é a melhor solução?
aplicativos do Google
Para grupos que usam aplicativos do Google, esta é a maneira mais fácil:
inclua a gema
gem 'omniauth-google-apps'
Depois de adicionar a gema, você precisará exigir algumas bibliotecas em seu arquivo inicializador omniauth
require 'openid/store/filesystem'
e como não precisamos criar chaves de API, você usará uma id aberta
provider :google_apps, store: OpenID::Store::Filesystem.new('/tmp'), domain: 'yourdomain.com'
e isso funcionará para um nome de domínio específico
Google Oauth2
Para uma conta normal do gmail, mas
aqui precisaremos adicionar chaves de API … mas onde? Ok. Vá aqui e obtenha algumas chaves de API para Oauth2 https://code.google.com/apis/console e também não se esqueça de adicionar algumas permissões para as APIs do Google que você deseja usar.
O resto da configuração do omniauth é quase o mesmo, mas para o uso da api, será outro show.