2012-02-16 4 views
1

Facebook C# SDK을 사용하여 방금 구입 한 제품을 내 웹 사이트에 공유하는 기능을 추가하려고합니다. 이렇게하려면 Facebook으로 사용자를 인증하고 필요한 권한을 얻어야합니다.Facebook 인증 리디렉션 루프

내가 인증했는지 확인하는 코드가 있는데, 그렇지 않은 경우 페이스 북의 oAuth 페이지로 리디렉션하여 인증합니다.

그러나 페이스 북에서 페이지를 반환 할 때 리디렉션 루프로 전환 할 때 :

var auth = new FacebookWebAuthorizer(); 

bool authorized = auth.FacebookWebRequest.IsAuthorized(new string[] { "publish_stream" }); 

if (authorized) 
{ 

    var client = new FacebookClient(auth.FacebookWebRequest.AccessToken); 

    Dictionary<string, object> args = new Dictionary<string, object>(); 

    args["message"] = "This is a test."; 
    args["name"] = ""; 
    args["link"] = "http://www.example.com/"; 
    args["description"] = "Test link."; 

    client.Post("/me/feed", args); 

} 
else 
{ 

    var facebookClient = new FacebookOAuthClient(); 

    var parameters = new Dictionary<string, object> { 
     { "redirect_uri", "http://www.example.com/" }, 
     { "client_id", "xxxx" }, 
     { "scope", "publish_stream" } 
    }; 

    Response.Redirect(facebookClient.GetLoginUrl(parameters).ToString(), true); 

} 

내 Web.config의는 다음과 같습니다

<configuration> 

    <configSections> 
     <section name="facebookSettings" type="Facebook.FacebookConfigurationSection" /> 
    </configSections> 

    <system.web> 

     <customErrors mode="Off" /> 

     <compilation debug="true" targetFramework="4.0" /> 

    </system.web> 

    <system.webServer> 

     <modules runAllManagedModulesForAllRequests="true" /> 

     <handlers> 
      <add name="facebookredirect.axd" verb="*" path="facebookredirect.axd" type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" /> 
     </handlers> 

    </system.webServer> 

    <facebookSettings appId="xxxx" appSecret="xxxx" /> 

</configuration> 

그것은 내 사이트가 아닌 보이는 것처럼 이미 인증을 받았기 때문에 Facebook 로그인으로 리디렉션됩니다. 페이스 북은 내가 인증을 받았음을 알고 있으므로, 나를 다시 리디렉션하여 루프를 유발합니다.

+0

제공된 링크는 해결책을 제공하지 않고 문제의 설명 만 제공합니까? –

답변

0

쿠키를 전혀 사용하지 않는 http://aka.ms/need01에서 사용할 수있는 몇 가지 샘플 코드를 만들었습니다. 기본적으로 내가 작성한 사용자 정의 인증 모듈 (Windows Azure 테이블에 저장된 세션 상태를 사용하지만 다른 저장소를 사용하는 세션 상태를 작성할 수 있음)을 사용하고 나머지 상태를 URL에 저장합니다. 희망이 있습니다.