ruby-on-rails-4 – 捆绑更新后损坏的FB-omniauth,凭据无效
发布时间:2020-12-17 02:57:00 所属栏目:百科 来源:网络整理
导读:oauth数据不会转到控制器操作.无法理解什么是错的.在这个控制器中还有一个auth提供程序,它运行良好,核心是完全相同的. devise 3.5.10 rails 4.2.4devise.rbconfig.omniauth :facebook,Figaro.env.fb_app_id,Figaro.env.fb_app_secret,callback_url: 'https:/
oauth数据不会转到控制器操作.无法理解什么是错的.在这个控制器中还有一个auth提供程序,它运行良好,核心是完全相同的.
devise 3.5.10 rails 4.2.4 devise.rb config.omniauth :facebook,Figaro.env.fb_app_id,Figaro.env.fb_app_secret,callback_url: 'https://chotam.ru/users/auth/facebook/callback',scope: 'email,publish_actions' class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController def facebook logger.error "fb here" # IT'S NO OUTPUT HERE ON REQUEST!!! logger.error(request.env['omniauth.auth']) result = User.find_for_facebook_oauth(request.env["omniauth.auth"],current_user) @user = result[:user] status = result[:status] if @user token = request.env["omniauth.auth"]["credentials"]["token"] @user.account.update_attribute(:fb_token,token) if status[:redirect] == 'added' || status[:redirect] == 'existed' flash[status[:key]] = status[:value] render 'devise/registrations/edit' else flash[status[:key]] = status[:value] sign_in_and_redirect @user,event: :authentication end else flash[status[:key]] = status[:value] redirect_to new_user_registration_url end end UPDATE E,[2017-03-28T23:46:41.255481 #21494] ERROR -- : (facebook) Authentication failure! invalid_credentials: OAuth2::Error,: {"access_token":"real_token","token_type":"bearer"$ 怎么找到什么问题? 解决方法
好的…找到了一种没有更新宝石的方法.
您可以在config.omniauth行的config / initializers / devise.rb文件中添加以下内容: client_options: { site: "https://graph.facebook.com/v2.3",authorize_url: "https://www.facebook.com/v2.3/dialog/oauth" },token_params: { parse: :json } YMMV具有完整配置,但它看起来像这样: config.omniauth :facebook,ENV["FACEBOOK_KEY"],ENV["FACEBOOK_SECRET"],scope: 'email',secure_image_url: true,auth_type: 'https',info_fields: 'email,name,first_name,last_name',client_options: { site: "https://graph.facebook.com/v2.3",authorize_url: "https://www.facebook.com/v2.3/dialog/oauth" },token_params: { parse: :json } 主要问题是他们升级了响应格式,并且没有强制版本指针和令牌参数解析新的json格式(而不是url编码格式),它会在响应中断,因为它无法识别什么是吐回来来自api. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |