[사용자 정의를 통해 로그인 ui] (https://developers.facebook.com/docs/facebook-login/ios/v2.3 # 라피콜스 로그인하십시오.) 의 자습서에 따라 및
-(IBAction)facebookLoginClick:(id)sender {
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Process error
} else if (result.isCancelled) {
// Handle cancellations
} else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if ([result.grantedPermissions containsObject:@"email"]) {
// Do work
}
}
}];
}
그러나 결과는 항상 내가 무언가 빠진 가능 전무했던 및 오류 코드가 304,
비슷한 문제가 있었습니다.
초기화 중 '선' 난 후 포브스트클로진국거 추가되든지 플러시하려면 아웃해야 데이터와 (페이스북) 토큰인지:
FBSDKLoginManager *loginmanager= [[FBSDKLoginManager alloc]init];
[loginmanager logOut];
ᄋ "이번 도움이 됩니다.
따라서 OP 묻습니다, 내가 정확히 같은 " 누각되었습니다 something",?
예, 이는 잘못된 모든 것을 단지 다음과 같은 표준 코드 예제:
-(IBAction)facebookLoginClick:(id)sender
{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
---- ONE MAGIC LINE OF CODE IS MISSING HERE ----
[login logInWithReadPermissions:@[@"email"]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error) {...}
else if (result.isCancelled) {...}
else { // (NB for multiple permissions, check every one)
if ([result.grantedPermissions containsObject:@"email"])
{ NSLog(@"%@",result.token); }
}
}];
}
이 작업을 수행해야 합니다.
-(IBAction)facebookLoginClick:(id)sender
{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut]; //ESSENTIAL LINE OF CODE
[login logInWithReadPermissions:@[@"email"]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error) {...}
else if (result.isCancelled) {...}
else { // (NB for multiple permissions, check every one)
if ([result.grantedPermissions containsObject:@"email"])
{ NSLog(@"%@",result.token); }
}
}];
}
그렇지 않으면, 간단히 말해, 앱 FB 에서 작동하지 않을 경우 사용자 계정을 변화가 발생합니까 변경하십시오 디바이스입니다. (일어나지 않는 한 어떤 이유로 재설치합니다 app!)
다시 한 번 위 - 인기 있는 샘플 코드를 간단히 사용할 수 없습니다 (댁이라면 인되며 인간의 끝없는 루프) 사용자가 변화가 발생합니까 FB 변경하십시오 계정임. 로그아웃 '콜' 을 해야 합니다.
이 때 나를 상태입니까 변경했습니다 페이스북 (Facebook) 응용 프로그램 id (flash. 린포드프리스트 파일) 형태로 운영 페이스북 앱 테스트 스위칭이란 경우 Facebook 앱 어플리케이션 서버에 대한 예를 들어, 제프트 sends 토큰인지 페이스북 SDK 를 생성하는 여전히 해결되지 않는 한 파브토켄 ('포브스트카치스토켄.커렌타크세스토켄 ()'), s # 39 제외시키려면 it& 유지된다 "고 말했다. 생산 차질이 발생할 수 있는 애플리케이션 (앱) 을 때 사용자가 로그온하면 빼냅니다 로그 아웃해야 apiu 로그합니다 너회의 제프트 사용자 로그아웃되며 재설정하지 요청할 계획이다. 하지만 이마저도 보내기 전에 요청을 할 것이라고 말해 '' 인스턴스입니다 로그아웃 apiu 클라이언트뿐 포브스트클로진국거 로그아웃하려면.
if let currentAccessToken = FBSDKAccessToken.currentAccessToken() where currentAccessToken.appID != FBSDKSettings.appID()
{
loginManager.logOut()
}
func loginWithFacebook
{
let loginManager = FBSDKLoginManager()
if let currentAccessToken = FBSDKAccessToken.current(), currentAccessToken.appID != FBSDKSettings.appID()
{
loginManager.logOut()
}
loginManager.logIn(withReadPermissions: ["public_profile","email"], from: self, handler: { (result, error) in
if error != nil {
print("error\(String(describing: error))")
}
else if (result?.isCancelled)! {
}
else {
print(FBSDKAccessToken.current())
}
})
}
let loginManager = LoginManager()
if let currentAccessToken = AccessToken.current, currentAccessToken.appId != SDKSettings.appId
{
loginManager.logOut()
}
FBSDKLoginManager().logOut()
사실, 그 이유는 이 오류는 다음과 같은 단계로 아주 간단한 코드를 쉽게 볼 수 있습니다.
, 는 페이스북 로그인 fail*&quo ". 두 가지 있을 수 있습니다. > 확보하십시오 사용자 정보, 1. facebook 에서 페일오버합니다. 하지만, 2 에서 페이스북 사용자 정보 확보하십시오 > 성공, 자체 서버를 업로드하십시오 페일오버합니다.
이 코드에서 code> FBSDKLoginManager.m< /code> <;;; 입니다.
- (void)validateReauthentication:(FBSDKAccessToken *)currentToken withResult:(FBSDKLoginManagerLoginResult *)loginResult
{
FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me"
parameters:nil
tokenString:loginResult.token.tokenString
HTTPMethod:nil
flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery];
[requestMe startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
NSString *actualID = result[@"id"];
if ([currentToken.userID isEqualToString:actualID]) {
[FBSDKAccessToken setCurrentAccessToken:loginResult.token];
[self invokeHandler:loginResult error:nil];
} else {
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
[FBSDKInternalUtility dictionary:userInfo setObject:error forKey:NSUnderlyingErrorKey];
NSError *resultError = [NSError errorWithDomain:FBSDKLoginErrorDomain
code:FBSDKLoginUserMismatchErrorCode
userInfo:userInfo];
[self invokeHandler:nil error:resultError];
}
}];
}
< 때 code> currentToken.userID< /code>;;; ,,,) 는 /code> actualid< code> 똑같지는 않습니다 < < code> fbsdkloginusermismatcherrorcode< /code>;; 던질 것이다.
이제 페이스북 사용자 로그인 실패 없는 때 이 문제를 다시 나타납니다 확장하지만 < code> [파스부크스데크만거 로그아웃] < /code>;; app 는 실패 후, 캐시 크세스토켄 A, B, 사용자의 사용자 변경 후 페이스북 계정 사용자 로그인 하면 그 때 다시 페이스북 사용자 B 다시 이 문제를 해결할 수 있습니다.
단일 사인온을 in your app https://developers.facebook.com/apps/your-app-id/settings/. 설정을 변경할 수 있습니다.