Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 参数app_id是必需的-Ruby_Ruby On Rails_Ruby_Facebook_Authentication - Fatal编程技术网

Ruby on rails 参数app_id是必需的-Ruby

Ruby on rails 参数app_id是必需的-Ruby,ruby-on-rails,ruby,facebook,authentication,Ruby On Rails,Ruby,Facebook,Authentication,我到处都找过了,我一直在关注Ryan Bates的传奇360 Facebook认证,但我仍然不明白为什么我会得到这个: The parameter app_id is required. 我不知道如何设置它们:ENV['FACEBOOK\u APP\u ID']和ENV['FACEBOOK\u SECRET'] 设置这些变量的最简单方法是什么,这样当我点击服务时,它就可以从应该从中读取的任何变量中成功地读取这些变量?我尝试将从Facebook获得的值粘贴到config.ru中,但似乎没有从这里

我到处都找过了,我一直在关注Ryan Bates的传奇360 Facebook认证,但我仍然不明白为什么我会得到这个:

The parameter app_id is required.
我不知道如何设置它们:
ENV['FACEBOOK\u APP\u ID']
ENV['FACEBOOK\u SECRET']

设置这些变量的最简单方法是什么,这样当我点击服务时,它就可以从应该从中读取的任何变量中成功地读取这些变量?我尝试将从Facebook获得的值粘贴到
config.ru
中,但似乎没有从这里读取这些值(app id和app secret),我仍然收到相同的错误

我不知道我错过了什么

以下是我到目前为止的情况:

omniauth.rb

    OmniAuth.config.logger = Rails.logger

    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']
    end
    <!DOCTYPE html>
    <html>
    <head>
      <title>WebProfiler</title>
      <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
      <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
      <%= csrf_meta_tags %>
    </head>
    <body>
      <div id="fb-root">
        <div class="fb-login-button" data-max-rows="1" data-size="medium" data-show-faces="false" data-auto-logout-link="true"></div>
      </div>
      <script src="../javascripts/facebookMagic.js">
      /*
      FB.api('/me', function(response) {
        console.log(JSON.stringify(response));
      });
      </script>
      <div class="jumbotron">
        <div class="container">

          <div id="user_nav">
            <% if current_user %>
              Signed in as <strong><%= current_user.name %></strong>
              <%= link to "Sign out", signout_path, id: "sign_out" %>
            <% else %>
              <%= link_to "Sign in with Facebook", "/auth/facebook", id: "sign_in"%>
            <% end %>
          </div>

          <% flash.each do |name,msg| %>
            <%= content_tag :iv, msg, id: "flash_#{name}" %>
          <% end %>

          <%= render 'components/search' %>
          <%= yield %>
        </div>
      </div>
    </body>
    </html>
config.ru

    # This file is used by Rack-based servers to start the application.

    require ::File.expand_path('../config/environment', __FILE__)

    use Rack::Session::Cookie, :secret => '<my secret is here>'

    use OmniAuth::Builder do
      provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET'], :scope => 'email,read_stream'
    end


    run Rails.application
facebookMagic.js

            // This is called with the results from from FB.getLoginStatus().
    function statusChangeCallback(response) {
      console.log('statusChangeCallback');
      console.log(response);
      // The response object is returned with a status field that lets the
      // app know the current login status of the person.
      // Full docs on the response object can be found in the documentation
      // for FB.getLoginStatus().
      if (response.status === 'connected') {
        // Logged into your app and Facebook.
        testAPI();
      } else if (response.status === 'not_authorized') {
        // The person is logged into Facebook, but not your app.
        document.getElementById('status').innerHTML = 'Please log ' +
        'into this app.';
      } else {
        // The person is not logged into Facebook, so we're not sure if
        // they are logged into this app or not.
        document.getElementById('status').innerHTML = 'Please log ' +
        'into Facebook.';
      }
    }

    // This function is called when someone finishes with the Login
    // Button.  See the onlogin handler attached to it in the sample
    // code below.
    function checkLoginState() {
      FB.getLoginStatus(function(response) {
        statusChangeCallback(response);
      });
    }

    window.fbAsyncInit = function() {
      FB.init({
        appId      : '1415171068775427',
        appSecret : 'd597ac96d2042c77ab0cf0e94d9a28fcReset'
        cookie     : true,  // enable cookies to allow the server to access
        // the session
        xfbml      : true,  // parse social plugins on this page
        version    : 'v2.1' // use version 2.1
      });

      // Now that we've initialized the JavaScript SDK, we call
      // FB.getLoginStatus().  This function gets the state of the
      // person visiting this page and can return one of three states to
      // the callback you provide.  They can be:
      //
      // 1. Logged into your app ('connected')
      // 2. Logged into Facebook, but not your app ('not_authorized')
      // 3. Not logged into Facebook and can't tell if they are logged into
      //    your app or not.
      //
      // These three cases are handled in the callback function.

      FB.getLoginStatus(function(response) {
        statusChangeCallback(response);
      });

    };

    // Load the SDK asynchronously
    (function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return;
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/en_US/sdk.js";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

    // Here we run a very simple test of the Graph API after login is
    // successful.  See statusChangeCallback() for when this call is made.
    function testAPI() {
      console.log('Welcome!  Fetching your information.... ');
      FB.api('/me', function(response) {
        console.log('Successful login for: ' + response.name);
        document.getElementById('status').innerHTML =
        'Thanks for logging in, ' + response.name + '!';
      });
    }

您要搜索的是如何在rails中设置环境变量。您可以从以下讨论开始:

您必须在初始值设定项中的某个位置或直接在服务器上设置这些变量,例如在Heroku上。您还可以为本地服务器()设置这些变量


希望这能让您开始学习。

您正在搜索的是如何在rails中设置环境变量。您可以从以下讨论开始:

您必须在初始值设定项中的某个位置或直接在服务器上设置这些变量,例如在Heroku上。您还可以为本地服务器()设置这些变量


希望这能让您开始学习。

您正在搜索的是如何在rails中设置环境变量。您可以从以下讨论开始:

您必须在初始值设定项中的某个位置或直接在服务器上设置这些变量,例如在Heroku上。您还可以为本地服务器()设置这些变量


希望这能让您开始学习。

您正在搜索的是如何在rails中设置环境变量。您可以从以下讨论开始:

您必须在初始值设定项中的某个位置或直接在服务器上设置这些变量,例如在Heroku上。您还可以为本地服务器()设置这些变量


希望这能让你开始。

我不记得我遇到这个错误时做了什么……已经一年多了……但你需要在
MyApp
选项卡中正确配置你的应用程序详细信息,并在
设置和应用程序详细信息中填写所需的详细信息


主要在
设置
中。您需要在
基本
中填写所有必需的详细信息,
Advanced
两者

我不记得我遇到这个错误时做了什么……已经一年多了……但你需要在
MyApp
选项卡中正确配置你的应用程序详细信息,并在
设置
和应用程序详细信息中填写所需的详细信息


主要在
设置
中。您需要在
基本
中填写所有必需的详细信息,
Advanced
两者

我不记得我遇到这个错误时做了什么……已经一年多了……但你需要在
MyApp
选项卡中正确配置你的应用程序详细信息,并在
设置
和应用程序详细信息中填写所需的详细信息


主要在
设置
中。您需要在
基本
中填写所有必需的详细信息,
Advanced
两者

我不记得我遇到这个错误时做了什么……已经一年多了……但你需要在
MyApp
选项卡中正确配置你的应用程序详细信息,并在
设置
和应用程序详细信息中填写所需的详细信息


主要在
设置
中。您需要在
基本
高级
中填写所有必需的详细信息

谢谢,我需要学习我的问题查询技巧。这救了我的命。不客气:)你介意接受/投赞成票吗?对,但我想接受答案是可能的;)谢谢,我需要学习提问技巧。这救了我的命。不客气:)你介意接受/投赞成票吗?对,但我想接受答案是可能的;)谢谢,我需要学习提问技巧。这救了我的命。不客气:)你介意接受/投赞成票吗?对,但我想接受答案是可能的;)谢谢,我需要学习提问技巧。这救了我的命。不客气:)你介意接受/投赞成票吗?对,但我想接受答案是可能的;)