簡體   English   中英

Omniauth Facebook登錄不起作用

[英]Omniauth Facebook logging in not working

我一直在嘗試為我的最新項目創建用戶身份驗證系統。 我決定不存儲任何密碼和東西,並使用社交網絡允許人們在我的項目中使用特定的功能(發表文章等)。

我剛剛在https://coderwall.com/p/bsfitw上完成了Sergio Tapia Gutierrez的教程。 正如評論中所示,教程步驟對大多數用戶來說都是正確的。 但不適合我。

我已經按照他在帖子中提到的方式做了所有事情,但我現在正面臨着一些錯誤。

首先,它是識別腳本。 我的rails應用程序似乎無法識別用戶是否已登錄,盡管我已按照教程中的說明將每行代碼放入我的應用程序中。 奇怪的是,當我多次點擊時,它開始識別並登錄我。

接下來讓我煩惱的是javascript。 我在Heroku上托管我的應用程序 - 有時JS似乎沒有對鼠標點擊做出反應(實際上是jquery)。 我還為Facebook對話框添加了一個彈出式腳本 - 它也沒有彈出。

對不起,我無法正確解釋 - 我是Rails的新手,我現在已經迷失了 - 我不知道真正的問題出在哪里,這些只是猜測。

Facebook.js.coffee

    jQuery ->
      $('body').prepend('<div id="fb-root"></div>')

      $.ajax
        url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js"
        dataType: 'script'
        cache: true


    window.fbAsyncInit = ->
      FB.init(appId: 'MyAppId(i've put it here, can't show ya :)', cookie: true)

      $('#sign_in').click (e) ->
        e.preventDefault()
        FB.login (response) ->
          window.location = '/auth/facebook/callback' if response.authResponse

      $('#sign_out').click (e) ->
        FB.getLoginStatus (response) ->
          FB.logout() if response.authResponse
        true

來自application.html.erb的代碼塊

<div id="user-widget">
  <% if current_user %> 
    Welcome <strong><%= current_user.name %></strong>!
    <%= link_to "Sign out", "#", id: "sign_out" %>
  <% else %>
    <%= link_to "Sign in with Facebook", "#", id: "sign_in" %>
  <% end %>
</div>

來自應用程序控制器的用戶狀態檢查器

class ApplicationController < ActionController::Base


  private
  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end
  helper_method :current_user
end

最后,會話控制器代碼

class SessionsController < ApplicationController
  def create
    user = User.from_omniauth(env["omniauth.auth"])
    session[:user_id] = user.id
    redirect_to articles_path, :notice => "Logged in"
  end

  def destroy
    session[:user_id] = nil
    redirect_to articles_path, :notice => "Logged out"
  end
end

更新! 我檢查了JS控制台。 它不斷吐出這一行 - “用戶已經連接時調用的FB.login()。” 這是什么意思? 它似乎並沒有用戶連接,但它不斷突然出現。

要使其適用於制作,您必須在Facebook應用設置中進行一些更改

  1. 您的應用域名應為herokuapp.com

  2. 網站網址http://yourappname.herokuapp.com/

  3. 並且不應該處於沙箱模式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM