2010-12-06 5 views
1

이미 폼 인증을 가지고있는 내 웹 사이트에서 Facebook 인증 및 FB-Graph를 활성화하려고합니다. http://multitiered.wordpress.com/2010/08/05/getting-started-with-the-facebook-c-sharp-sdk/을 사용하여 서버 측 로그인 방법을 파악할 수있었습니다.ASP.Net 및 Facebook : ASP.Net을 통한 로그인

그러나이 방법의 문제점은 호출이 콜백을 통해 쿼리 문자열에 인증 코드를 반환하기 때문에 보안 쿠키가 생성되지 않는다는 것입니다. 즉, 사용자는 시간마다 에 로그인해야합니다.

나는이 문제를 두 가지 방법을 볼 수

  1. 스토어 안전한 쿠키에 액세스 토큰을 수동으로 대신 위의 접근 방식의
  2. 가 로그인 할 FB JS API를 사용 -이와 안전한 쿠키를 저장 자동으로 액세스 토큰

로그인 코드를 서버 쪽으로 사용하려는 경우 두 번째 방법을 사용하지 않는 것이 좋습니다.

더 나은 접근 방법은 무엇입니까? 내가 놓친 게 있니?

+0

자바 스크립트를 사용하는 것을 꺼리는 것이 부당하다고 생각합니다. 이 js 코드는 인터넷을 통해 수백 개의 사이트에 있어야합니다. 너를 너에게 추가하면 커다란 충격이되지 않을거야. 어쩌면 나는 너의 꺼리는 것을 오해한다. – jcollum

+1

내 페이지가 대부분 페이지 로딩 시간과 관련이 있습니다. JS의 크기와 양을 늘리고 싶지 않습니다. 내 페이지는 이미 JS가 무겁습니다. –

+0

입니다.하지만 첫 번째로드 만 발생하므로 콘텐츠가 캐시됩니다. 그 후에; 게다가 야후 나 페이스 북에서 그 코드를 하나의 js 파일로 가져 와서 서버에서 모두 나오지는 않을 것입니다 - 서버에서 온 것처럼 99.9 %의 속도로로드하십시오 : http : // betterexplained.com/articles/speed-up-your-javascript-load-time/ – jcollum

답변

0

JS SDK는 먼저 사용자를 인증하기 위해 JavaScript 메소드를 사용하고 연결된 사용자가 페이지를 조회 할 때 암호화 된 쿠키 ("fbs_ [YourAppID]")를 작성합니다. 많은 페이스 북 C# SDK 중 하나를 사용하여이 쿠키는 사용자 ID, oAuth 토큰, 만료 날짜 등을 제공하는 응용 프로그램 비밀 번호를 사용하여 디코딩 할 수 있습니다.

그런 다음 .NET 응용 프로그램의 AuthenticateRequest 이벤트에 연결하여 쿠키 존재 여부, 디코딩 여부를 확인한 다음이 페이스 북 ID가 할당 된 사용자를 찾습니다 (사용자 테이블에는 페이스 북 계정의 ID 저장을위한 추가 필드가 있어야합니다).

일치하는 것이 발견되면이 사용자에 대한 일반 양식 인증 쿠키를 작성한 다음 .NET은 이후의 모든 요청에 ​​대해이를 인식합니다. 사용자가 발견되지 않으면 이것은 방금 접속 한 아주 새로운 사용자입니다. SDK를 다시 사용하여 oAuth 토큰을 사용하여 그래프 API를 쿼리하고 이름/이메일 등을 가져 와서 새 계정을 만든 다음 정상적으로 인증 토큰을 발급합니다.

일반적인 승인 쿠키를 작성하면 일반 사용자처럼 모든 요청에 ​​대해 사용자가 사이트에 로그인 한 상태를 유지합니다.

이메일 주소를 사용할 때 중복을 확인하고 모든 요청에서 페이스 북 쿠키를 확인하십시오. 예를 들어, 기존의 등록 된 로그인 사용자가 방금 연결되었을 수 있습니다.