2012-01-08 2 views
1

저는 페이스 북 API에 새로운 것이고 일부 작업 후에 문제가 발생했습니다. 먼저 페이스 북 API와의 통신에 the facebook SDK을 사용하고 있습니다.Facebook 인증 응답 매개 변수가 잘못되었습니다 -> 무한 요청 루프

내 앱 설정에서 OAuth 대화 상자의 응답이 URI 조각 대신 쿼리 문자열이어야한다고 선택했습니다. 내 서버에서

enter image description here

나는 다음과 같은 코드를 가지고 :

void Page_Load() 
{ 
    string url = Request.Url.AbsoluteUri; 
    Facebook.FacebookOAuthResult result = null;   
    if (!Facebook.FacebookOAuthResult.TryParse(url, out result)) 
    { 
     string redirectUrl = PivotServer.Helpers.GetFacebookOAuthUrl(); 
     Response.Redirect(redirectUrl); 
    } 
} 

을 그리고 내 도우미 메서드는 이잖아 :

public static string GetFacebookOAuthUrl() 
    { 
     FacebookOAuthClient oauth = new FacebookOAuthClient 
     { 
      AppId = "149637255147166", 
      AppSecret = "xxx", 
      RedirectUri = new Uri("http://mydomain.com/") 
     }; 

     var param = new Dictionary<string, object> 
     { 
      { "response_type", "token" }, 
      { "display", "popup" } 
     }; 

     Uri url = oauth.GetLoginUrl(param); 

     return url.AbsoluteUri; 
    } 

나는 웹 서버 (IIS)에 내 페이지를 달렸다. 처음 페이스 북에 로그인하라는 메시지가 뜨면 OK입니다. 페이스 북에서 Auth Token Parameter가 URI 조각이기 때문에 인피니티 루프를 만났습니다. 나는 원했다 (위 그림 참조). 응답은 URI는

http://mydomain.com/#access_token=AAACIGCNwLp4BAMccSoliF5EMGJm0NPldv5GpmBPIm9z7rRuSkiia7BM0uhEn1V88c8uOlWOfGc3C8sFC9tq90Ma0OwIm0tWLNU5BBAZDZD&expires_in=0&base_domain=mydomain.com

대신

http://mydomain.com/?code=AAACIGCNwLp4BAMccSoliF5EMGJm0NPldv5GpmBPIm9z7rRuSkiia7BM0uhEn1V88c8uOlWOfGc3C8sFC9tq90Ma0OwIm0tWLNU5BBAZDZD&expires_in=0&base_domain=mydomain.com

의 OAuth API에서 버그가, 또는 내가 여기 아주 무슨 일을하고있는 중이 야인가요처럼 보인다?

답변

1

는 너무 쉬웠다 :

var param = new Dictionary<string, object> 
{ 
    { "response_type", "code" }, // <--- "code" instead of "token" 
    { "display", "popup" } 
}; 
1

IE와 관련된 문제입니다. 서버의 각 응답에 p3p 헤더가 있어야합니다.

관련 문제