2016-09-28 47 views
1

我想在与谷歌或在轨道任何其他社交网络来实现的迹象。我已经跟着Codeplace教程,http://r12---sn-cvh7kn7y.googlevideo.com/videoplayback?sparams=dur,ei,expire,id,i错误注册使用Google+在轨

我面临以下的问题

Error: invalid_request 

Missing required parameter: client_id 

Learn more 

Request Details 
    access_type=offline 
scope=email profile 
response_type=code 
redirect_uri=http://localhost:9292/auth/google_oauth2/callback 
state=2f6a1b1d2e0a2fb1c75647a6d145efa907c3ee9038a8bb54 
client_id= 

我相关的代码是 - omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do 
provider :google_oauth2,ENV['238730796202-.com'],ENV['TyqJqfiOJLoLgqRRGgTIynxt'] 
provider :facebook, ENV['1585034338471672'],ENV['3211b382a1636bdc747d37921aab2a90'] 
end 

sessioncontroller.rb

class SessionsController < ApplicationController 

def create 
    auth = request.env["omniauth.auth"] 
    puts auth 
    session[:omniauth] = auth.except('extra') 
    user = User.sign_in_from_omniouth(auth) 
    session[:user_id] = user_id 
    redirect_to root_url, notice:"Sign In" 
end 
def destroy 
    session[:user_id] = nil 
    session[:omniauth] = nil 
    redirect_to root_url, notice:"Sign OUT" 
end 
end 

user.rb

class User < ActiveRecord::Base 
    def self.sign_in_from_omniouth(auth) 
    find_by(provider: auth['provider'], uid: auth['uid'])|| 
    create_user_from_omniauth(auth) 
end 

    def self.create_user_from_omniauth(auth) 
     create(
    provider:auth['provider'], 
    uid:auth['uid'], 
    name:auth['info']['name'] 

    ) 
end 
end 
end 

任何一个能帮助我吗?

回答

0

按照出现的错误,client_id丢失。

尝试,其中通过执行此操作,以获得的OAuth从谷歌API控制台2.0凭证在documentation给定的基本步骤:

访问的谷歌API控制台获得OAuth 2.0凭据诸如client IDclient secret那对Google和您的应用程序都是已知的。

另外,请尝试通过谷歌API控制台使“联系人API”“Google+的API”。正如本GitHub post指出,如果这些都没有启用,您会收到OAuth2::Error(Error: "Invalid credentials")说明未配置的访问,当您尝试进行身份验证。

请尝试通过给定的GitHub后,OmniAuth Google OAuth2 Strategy去的重要细节。