【发布时间】:2014-05-31 14:59:13
【问题描述】:
我正在使用 oauth 根据this 指南尝试通过 venmo 登录。这不是官方的,venmo 文档甚至没有显示 ruby 的代码示例。
起初,我什至看不到 venmo 登录。我删除了初始化程序中 id 和 secret 周围的 ENV 和括号,然后我可以看到登录信息。当我提交并点击回调时,我收到此错误:(我认为它会无休止地重试......我必须手动关闭服务器)
{"error": {"message": "Missing argument: client_id.", "code": 241}}
I, [2014-04-16T11:49:48.124423 #47700] INFO -- omniauth: (venmo) Callback phase initiated.
E, [2014-04-16T11:49:48.345202 #47700] ERROR -- omniauth: (venmo) Authentication failure! invalid_credentials: OAuth2::Error, {"message"=>"Missing argument: client_id.", "code"=>241}:
这是我的路线:
get 'users/auth/venmo/callback' => 'omniauth_callbacks_controller#create'
宝石:
gem 'devise'
gem 'omniauth'
gem 'omniauth-venmo'
我的初始化程序/omniauth.rb 中有这个
Rails.application.config.middleware.use OmniAuth::Builder do
provider :venmo, 'id', 'secret', :scope => 'access_feed,access_profile,access_friends,make_payments'
end
这是我的回调控制器
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def venmo
@user = User.find_for_oauth(env["omniauth.auth"], current_user)
raise
if @user.persisted?
sign_in_and_redirect root_path, :event => :authentication
set_flash_message(:notice, :success, :kind => "Venmo") if is_navigational_format?
else
session["devise.venmo_uid"] = env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
protected
def auth_hash
request.env['omniauth.auth']
end
结束
我有初始化程序/devise.rb
require 'omniauth-venmo'
config.omniauth :venmo, "KEY", "SECRET"
--当然是填写的值。我会很感激帮助... 谢谢!!
更新:我已将此推送到 github 存储库,我的一位同行将其拉出。他没有得到同样的错误。这是什么原因..?
【问题讨论】:
-
如果您添加回
ENV['VENMO_CLIENT_ID']和ENV['VENMO_CLIENT_SECRET']然后在运行您的rails 进程之前设置环境变量(即export VENMO_CLIENT_ID=whatever在同一终端中)那么它是否有效? -
我试过使用 $export,是的。还是没有骰子
-
你得到什么错误?
-
同一个..很奇怪
-
@agf 有什么想法吗?我有一个朋友从我们的 github 上拉,他甚至没有得到同样的错误。他有一个 SSL 错误,我认为这更接近功能性。
标签: ruby-on-rails ruby-on-rails-4 devise omniauth venmo