[英]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應用設置中進行一些更改
您的應用域名應為herokuapp.com
並且不應該處於沙箱模式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.