2013-08-20 2 views
1

필자는 아직 페이스 북을 설치하지 않았지만 (유사하지만 다른 짐승처럼 보이지만), 지금 당장은 내 이해에 기초하여 서명 할 수 있어야한다. 내 트위터 사용자 이름과 함께 "당신이 로그인했습니다!" 그것은 약간 별도의 노트에, 또한레일즈 4.0 User Authentication with Devise + Omniauth

<span>Logged in as <%= current_user.username %>.</span> 

말한다 어디서 나는 flash.notice 나를 위해 작동하지 않는 이유를 알고 싶어요, 내 사용자 이름을 표시합니다. Rails 4에서 사용되지 않거나 내 application.html.erb 파일에서 뭔가를 놓치고 있습니까? 내가에서 일하고 있어요

: 여기 http://railscasts.com/episodes/235-devise-and-omniauth-revised

내가 현재 함께 일하고 있어요 코드입니다.

https://github.com/erosenberg/devise-app

편집는 : 좋아, 나는 매우 구체적인 아니었다 죄송합니다, 나는 그것을 단축 있도록 텍스트 내 벽 덜 반응을 얻을 것이라고 생각.

필자는 본질적으로 Railkeast와 협력하여 Devise가 Omniauth와 협력하도록 노력하고 있습니다. 과거에는 Omniauth와 Devise가 독자적으로 작업하고 함께 가져 왔지만 완전히 새로운 도전이었습니다. 모든 자습서에서 나에게 다른 방식으로 말했고 모두 구식 인 것처럼 보였습니다. 내가 설정 한 방법은 RailsCast가 권장하는 방법입니다. OmniAuthCallbacks 컨트롤러를 추가하는 것이지만 아무 것도하지 않는 것 같습니다. 내 앱을 사용하여 Twitter에서 로그인을 시도하면 로그인 페이지로 다시 돌아갑니다. 그러나 이메일 주소로 로그인을 시도하면 작동하고 "대시 보드"로 이동합니다. 만들어진. 어떤 이유로 트위터 로그인이 작동하지 않고 flash [: notice]를 사용하여 테스트 할 수 있기를 원하지만 어떤 이유로 든 작동하지 않습니다. Facebook 로그인이 작동하고 사용자가 Twitter 또는 Facebook 계정을 병합 할 수있게하고 싶습니다.

내가 더 자세히 설명 할 필요가 있다면, 나도 그렇게하려고 할 수 있습니다. 감사!

+1

자세한 내용이 필요합니다. 우리는 당신이 아니며 귀하의 프로젝트를 이해하지 못한다는 점에 유의하십시오. 문맥, 필요한 것, 일어날 것으로 예상되는 것, 일어나는 일을 기술하십시오. –

+0

여기에 어떤 문제가 있는지 잘 모르시겠습니까? 어쨌든, 방금 코드를 확인한 다음 [this] (https://github.com/erosenberg/devise-app/commit/fe471f0dc0970bf3b17789bf7ffd99ed744bd63f#L4R15)가 잘못되었습니다. 이 코드는 사용자 모델 클래스에 포함되어야합니다. [이 튜토리얼] (https://github.com/plataformatec/devise/wiki/OmniAuth:- 개요)을 확인하십시오. – Ashitaka

+0

나는 이해하기 쉽게 설명하기 위해 설명을 편집했다. 이제 그 튜토리얼을 살펴 보겠습니다. – eightonrose

답변

2

config/initializers/devise.rb에서 구성을 변경하지 않았습니다.

config.authentication_keys = [ :email ] 

기본적으로 전자 메일을 사용하여 인증합니다. 따라서 누락 된 코드는 사용자의 이메일을 저장하거나 유효성을 검사하지 못합니다.

authentication_key를 변경하거나 이메일을 저장할 수 있습니다.

확인

편집 나는 응용 프로그램을 복제하고 내 컴퓨터에서 실행 한 후. 전자 메일 유효성 검사가 실패했기 때문입니다. 개발자 계정 생성자를 사용하여 마이그레이션 파일 here을 만들 때 Devise 유효성 검사 전자 메일은 기본적으로 현재 상태 여야합니다.

t.string :email,    :null => false, :default => "" 

그래서이 마이그레이션을 원격 ': null => false'로 변경하려면 롤백 할 수 있습니다. 그 후이 코드를 사용자 사용자 모델에 추가하십시오.

def email_required? 
    false 
end 

올바른 인증 키를 얻기 위해 구성을 변경하는 것을 잊지 마십시오.

config.case_insensitive_keys = [ :username ] 
config.strip_whitespace_keys = [ :username ] 
+0

주석 처리를 시도했지만 작동하지 않았습니다. 그래도 옳은 길에있는 것처럼 보입니다! – eightonrose

+0

대신 config.authentication_keys = [: 사용자 이름]을 사용해보십시오. –

+0

아니, 여전히 작동하지 않습니다, 비록 그것이해야 할 것 같아요 ... – eightonrose

관련 문제