2012-05-23 1 views
1

Devics 및 OAuth를 사용하여 Rails 앱에 소셜 로그인 (Facebook, Twitter 등)을 통합했습니다. 요청과 콜백은 모두 훌륭하게 작동하며 사용자는 앱을 인증하고 효율적으로 로그인 할 수 있습니다. 내 사이트가 사용자 이름과 사용자의 이메일 주소가 고안와Twitter에서 Rails 통합을위한 이메일 주소를 제공하지 않습니다.

:

내 문제는 이것이다. 따라서 사용자가 처음으로 소셜 사이트를 통해 로그인 할 때마다 자신의 계정에 로그인 한 소셜 사이트를 보여주는 '연결'레코드가 저장됩니다. 사이트에 아직 계정이없는 경우 콜백 배열의 이메일 주소를 사용하여 계정을 만듭니다. 나중에 사용하기 위해 반환 된 토큰 및 비밀 정보와 함께 연결이 저장됩니다 (FB 게시물, 트윗 등).

불행히도 트위터는 이메일 주소를 제공하지 않습니다. 이를 회피하기 위해 트위터로 처음 로그인 한 사용자에게 이메일 주소를 제공하여 계정을 만들도록 요청합니다. 그러나 이미 사이트에 계정이있는 경우 어떻게해야하는지 알 수 없습니다. 내가 일치하기 위해 이메일 주소를받지 못했기 때문에 이미 확인했는지 확인할 수 없습니다. 이로 인해 궁극적으로 사용자가 여러 계정을 가질 수 있습니다.

그래서 저는 약간의 상실감이 있습니다. 누군가 제안이 있다면, 매우 도움이 될 것입니다. 감사합니다. :)

답변

0

{provider, twitter identifier} 같은 oauth 제공 업체 정보도 데이터베이스에 저장 한 다음 이메일 ID 대신 트위터 oauths를 확인해야합니다.

가장 간단한 방법은 로그인이 트위터를 통해 이루어진 경우에 약간 다른 흐름을 추가하는 것입니다. 트위터 로그인 사용자에게 이메일 ID를 물어보십시오. 사용자 테이블에서 tw_id라는 열을 추가하고 사용자 트위터 식별자를 추가하십시오. 다음에 로그인이 Twitter를 통해 이루어지는 경우 공급자 이메일 대신 tw_id를 확인하고 일반적인 앱 흐름을 계속 진행합니다.

관련 문제