2012-07-27 3 views
0

SDK의 Facebook.dll 버전 6.0.10.0을 사용하고 있습니다. 우리는 응용 프로그램의 베타 테스트 중이며 사용자 중 한 명이 로그인 할 수 없습니다. 사용자가 Chrome을 사용하는 iMac에 있습니다."코드가 유효하지 않거나 유효 기간이 만료되었습니다."오류를 찾는 데 도움이 필요합니다.

페이스 북 자바 스크립트 SDK를 사용하지 않고 서버 측 플로우를 사용하고 있습니다. 여기

내가 페이스 북에서 데이터를 검색하는 데 사용하고 서버 측 코드의 조각입니다 ... (이 코드는 어딘가 샘플에서 직접 온, 그래서 신용은 저자 :-) 때문이다)

var fbClient = new FacebookClient(); 
     var oauthResult = fbClient.ParseOAuthCallbackUrl(pRequestUri); 

     string accessToken = null; 
     DateTime expires = DateTime.Now;  

     // Exchange the code for an access token 
     dynamic result = fbClient.Get("/oauth/access_token", new 
     { 
      client_id = ConfigurationManager.AppSettings["FacebookAppId"], 
      redirect_uri = pRedirectUri.AbsoluteUri, 
      client_secret = ConfigurationManager.AppSettings["FacebookAppSecret"], 
      code = oauthResult.Code, 
     }); 
     accessToken = result.access_token; 
     expires = DateTime.UtcNow.AddSeconds(Convert.ToDouble(result.expires)); 

     // Get the user's profile information 
     dynamic me = fbClient.Get("/me", 
     new 
     { 
      fields = "first_name,last_name,email,name", 
      access_token = accessToken 
     }); 

     // Read the Facebook user values 
     string sfacebookId = me.id; 
     string firstName = me.first_name; 
     string lastName = me.last_name; 
     string email = me.email; 

다음은 내 로그에서 예외에 대한 세부 정보입니다.

(OAuthException - #100) Code was invalid or expired. 

This may be because the user logged out or may be due to a system error. 

source="Facebook" detail="Facebook.FacebookOAuthException: (OAuthException - #100) Code was invalid or expired. This may be because the user logged out or may be due to a system error. 

Stack Trace: 

at Facebook.FacebookClient.ProcessResponse(HttpHelper httpHelper, String responseString, Type resultType, Boolean containsEtag, IList`1 batchEtags) 

at Facebook.FacebookClient.Api(HttpMethod httpMethod, String path, Object parameters, Type resultType) 

at Facebook.FacebookClient.Get(String path, Object parameters) 

Facebook에서 반환 된 쿼리 문자열에는 매개 변수 코드가 포함되어 있으며 값이 있습니다.

스택 추적에서 내 코드에서 첫 번째 .Get() 메서드 호출이 오류를 throw하는 .ProcessResponse() 메서드를 호출하는 것을 쉽게 알 수 있습니다.

어디서나 만료 된 액세스 토큰을 어떻게 처리할지 검색합니다.

필자의 경우 아직 액세스 토큰을 검색하지 못했지만 내 코드가 만료되었거나 유효하지 않습니다. 새 코드를 요청하려면 어떻게해야합니까?

감사합니다,

+0

tryParseOAuthCallbackUrl을 사용하고 result.IsSuccess가 true이고! string.IsNullOrEmpty (result.Code) – prabir

+0

@prabir : 해당 체크를 추가하면 코드가 유효한지 확인할 수 있지만 여전히 사용자에게 access_token이 필요합니다. 이 시나리오에서 access_token을 얻으려면 어떻게해야합니까? 사용자가 로그인하지 못하게하면 무엇이됩니까? – RDotLee

+0

querystring에 코드가 있습니까? – prabir

답변

0

내 모든 사용자를위한 작업 서버 측 흐름을 얻을 수 없었다, 그래서 내가 나서서 FB 자바 스크립트 SDK로 전환하고 지금 나를 위해 노력하고 있습니다.

관련 문제