Rails Facebook-omniauth,Devise - 为什么我不能使用环境变量?

时间:2014-08-18 07:44:50

标签: ruby-on-rails facebook devise omniauth

我在我的应用程序中使用了Devise工作的omniauth,但随后我将我的Facebook凭据移动到环境变量中,并且我已经在控制台中检查以确保它们已被定义。我开始在服务器日志中看到这个:

(facebook) Callback phase initiated.
facebook) Authentication failure! invalid_credentials: OAuth2::Error, : 
{"error":{"message":"Error validating client secret.","type":"OAuthException","code":1}}

当我尝试让测试用户通过Facebook进行身份验证时。我已经检查了我的APP_ID和APP_SECRET。两者都设置并匹配我的FB开发人员仪表板中的凭据。

我还尝试删除我的Facebook应用并创建一个全新的应用程序(更新的ID和SECRET)。

我还尝试创建没有使用omniauth的新用户,但没有运气。

最后,我尝试恢复到硬编码的Facebook凭据。有效! 为什么我不能使用环境变量来获取这些凭据?我正在使用Heroku,我仔细检查以确保它们已设置。我在我的本地环境中使用了初始化程序,并且也正确设置了它。

这是我在回调控制器中的实现:(请注意,在用户注册了帐户后,我将Facebook用作可选集成。)

class Vendors::OmniauthCallbacksController < Devise::OmniauthCallbacksController
    def facebook
        @vendor = current_vendor
        uid = request.env["omniauth.auth"]["uid"]
        fb_token = request.env["omniauth.auth"]["credentials"]["token"]
        @vendor.update_attributes(:uid => uid, :fb_token => fb_token)
        redirect_to vendors_dashboard_path
    end
end

此处的任何帮助表示赞赏。如果可能的话,我不想硬编码我的凭据并将它们检查到源代码管理中!

1 个答案:

答案 0 :(得分:0)

您正在尝试获取与环境变量不同的请求变量。您可以通过ENV哈希访问您的环境变量。通过将它们输出到控制台puts ENV['KEY']来确保它们存在。