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() 메서드를 호출하는 것을 쉽게 알 수 있습니다.
어디서나 만료 된 액세스 토큰을 어떻게 처리할지 검색합니다.
필자의 경우 아직 액세스 토큰을 검색하지 못했지만 내 코드가 만료되었거나 유효하지 않습니다. 새 코드를 요청하려면 어떻게해야합니까?
감사합니다,
tryParseOAuthCallbackUrl을 사용하고 result.IsSuccess가 true이고! string.IsNullOrEmpty (result.Code) – prabir
@prabir : 해당 체크를 추가하면 코드가 유효한지 확인할 수 있지만 여전히 사용자에게 access_token이 필요합니다. 이 시나리오에서 access_token을 얻으려면 어떻게해야합니까? 사용자가 로그인하지 못하게하면 무엇이됩니까? – RDotLee
querystring에 코드가 있습니까? – prabir