코드번호 901에러


이 에러는 페이스북에 등록한 앱이 sandbox 모드일 때 일어난다.


 Sandbox Mode 란 앱 관계자만 페이스북을 통해서 접속이 가능한 모드이다.


이럴 때는 다음과 같이 sandbox 모드를 해제해준다.




그러면 다음과 같이 모두에게 접속가능해진다.






참고자료





'Ruby On Rails' 카테고리의 다른 글

TDD - fixture  (0) 2013.05.13
HTML <a> 태그와 ERB의 link_to 변환  (0) 2013.05.02
Omniauth - 페이스북 로그인 에러 901  (0) 2013.05.02
Omniauth - 페이스북 로그인 에러 191  (0) 2013.05.02
Bootstrap - navbar-form  (0) 2013.05.01
Omniauth - 페이스북 로그인  (0) 2013.05.01
Posted by 하남각목



코드번호 191 에러

이 에러는 페이스북 앱에서 Site URL이 잘못지정된 경우에 생기는 오류이다.

테스트시에는 localhost:3000과 같은 주소를 쓸 수 있으나 실제 서버에서 사용하려면 url을 적어줘야 한다.

  로컬에서 테스트할 때는 서버 url을 적을 시 같은 오류가 뜬다. 반드시 배포시에만 바꿔주자.



오류.


변경.


  서버 ip주소를 적어도 같은 오류가 생긴다. 반드시 도메인 네임을 써줘야 한다.

  아직 도메인을 구입하지 않았다면 /etc/hosts 에서 도메인을 지정해 줄 수 있다.




참고자료







Posted by 하남각목


Omniauth를 이용한 페이스북 로그인을 알아보자.

개발자는 다음을 우선적으로 시행해야 한다.

  1. 페이스북에 앱을 등록해서 App ID와 App Secret을 얻어야한다.
  2. Website with Facebook Login을 사용한다고 설정한다.




다 됐다면 다음을 진행하자.
먼저 Gemfile에 다음 코드를 삽입한다.
  gem 'omniauth-facebook'



그 다음 'bundle install'을 실행하자.

그러면 자동으로 oauth2, omniauth, omniauth-oauth2, omniauth-facebook을 설치할 것이다.

 


그 다음 프로젝트폴더/config/initializers/devise.rb 파일에 다음 코드를 입력하자.


  require "omniauth-facebook"

  config.omniauth :facebook, "APP_ID", "APP_SECRET"



그 다음 devise에서 만들어놓은 user 모델에 다음 코드를 삽입하자.

  devise :omniauthable



그 다음 앱에 접속하면 다음과 같이 'Sign in with Facebook' 링크를 볼 수 있을 것이다.



지금 이 링크를 클릭하면 다음과 같은 에러를 볼 수 있는데,

이는 페이스북 인증이 성공적으로 이루어 졌을 시 불러질 콜백 메서드를 만들어 주지 않았기 때문이다.




이를 해결하기 위해 다음을 실행하자.

우선 프로젝트폴더/config/locales/routes.rb 파일에 다음 코드를 넣어주자.

  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }




그 다음으로 프로젝트폴더/app/controllers/ 폴더에 users 폴더를 만든다.

그리고 프로젝트폴더/app/controllers/users/ 폴더에 omniauth_collbacks_controller.rb 파일을 만든다.

그러고 다음 코드를 넣어주자.




  페이스북 정보데이터 => request.env["omniauth.auth"]

  유저가 유효하면 로그인.

  그렇지 않으면 회원가입 폼으로 이동.




그 다음 프로젝트폴더/app/models/user.rb 파일에 다음 코드를 넣어주자.


  같은 이메일주소를 가진 회원이 없다면 새로 만든다.

  이때 이메일과 이름은 페이스북 정보를 이용하고 비밀번호는 랜덤으로 생성한다.



그 다음 프로젝트폴더/app/models/user.rb 파일에 다음 코드를 넣어주자.


 유저가 회원가입전에 생성됐을 때, 세션에서 이메일 정보를 가져온다.






참고자료

1. omniauth-facebook - Github

2. Facebook Authentication - Rails Cast

3. Adding Facebook Auth - Ruby On Rails Outsourcing 



Posted by 하남각목