나는 enbr 게시 된 솔루션이 완전하지 않다고 생각합니다. 이유를 설명해 드리겠습니다.
Facebook 세션이 만료되고 이전 액세스 토큰을 계속 사용하면 액세스 토큰 오류가 반환됩니다. 로그 아웃 만이 세션 만료 시나리오가 아닙니다 (예 : 웹 로그인 비밀번호 변경). 따라서 로그 아웃 후 사용자 기본값을 단순히 정리하는 것만으로는 충분하지 않습니다.
클라이언트 측에서는 응답에 이러한 정보가 올 때까지 실제로 유효한 액세스 토큰이 있는지 여부를 알 수 없습니다. 따라서 액세스 토큰 오류를 감지하고 이전 액세스 토큰 및 만료 날짜를 정리하여 Facebook 인스턴스를 작동 상태로 복원해야합니다. 이렇게하면 새 액세스 토큰을 얻으려면 다시 로그인해야합니다.
그래서, IMO, 당신이해야 할 것은 :
핸들 오류 및 액세스 토큰 오류가 발생하면 감지합니다.
액세스 토큰 오류가 발생하면 자동으로 로그 아웃하고 사용자 기본값을 정리하여 이전 액세스 토큰을 제거합니다 (3 단계).
로그 아웃의 결과로 액세스 토큰 및 만료 날짜 (enbr 게시 됨)에 대한 사용자 기본값을 정리해야합니다.
-(BOOL)isAccessTokenError:(NSError *) error {
if ([[error domain] isEqualToString:@"facebookErrDomain"] && [error code] == 10000) {
NSDictionary *userInfo = [error userInfo];
NSDictionary *errorAsDictionary = [userInfo objectForKey:@"error"];
if ([[errorAsDictionary objectForKey:@"type"] isEqualToString:@"OAuthException"]) {
//Invalid access token
return YES;
}
}
if ([[error domain] isEqualToString:@"facebookErrDomain"] && ([error code] == 110 || [error code] == 190)) {
//Error accessing access token
return YES;
}
return NO;
}
지역 정보 등의 오류가 처리 할 수있는 :
- (void)request:(FBRequest*)request didFailWithError:(NSError*)error;
- (void)dialog:(FBDialog*)dialog didFailWithError:(NSError *)error;
난이 도움이되기를 바랍니다 여기
당신은 액세스 토큰 오류를 감지하는 데 사용할 수있는 몇 가지 코드가 있습니다.
업데이트 : 나는 깜빡합니다. SSO 기능을 사용하는 경우 (대부분), 로그인하기 전에 페이스 북 쿠키를 정리하는 것이 좋습니다. 때로는 잘못된 액세스 토큰 오류가 발생한 후 로그인이 "클린 로그인"이 수행되지 않는 한 페이스 북 개체를 작동 상태 (유효한 액세스 토큰)로 되돌릴 수없는 것처럼 보일 때가 있습니다. 항상 작동하지는 않습니다.
또한 SSO 기능을 사용하지 않는 경우 자동으로 다시 사라지는 것으로 보이는 고스트 로그인 팝업을 수정하는 데 사용됩니다.
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:
[NSURL URLWithString:@"http://login.facebook.com"]];
for (NSHTTPCookie* cookie in facebookCookies) {
[cookies deleteCookie:cookie];
}
enter code here
출처
2011-08-31 15:36:57
Lio
가 h'mmm ... 나는이 문제가있어,이 문제를 해결하기를 희망하지만, 좋은 :
이 내가 쿠키를 청소하지 방법이다. "현재 사용자에 대한 정보를 쿼리하려면 활성 액세스 토큰을 사용해야합니다."라는 오류가 계속 나타납니다. 아주 수수께끼 같아.이상한 일은 언젠가는 잘 작동했지만, 지금은 붙어있는 것 같습니다. UserDefaults에 저장된 쿠키 및 토큰 정보를 삭제하지만 다시 로그인 한 후에도 동일한 오류가 발생합니다. 당 ... – John