2015-04-16 31 views
1

我正在使用Facebook-iOS-SDK(4.0.1)用自定義按鈕登錄。我執行下面的代碼使用Facebook-iOS-SDK(4.0.1)在使用瀏覽器時設置result.isCancelled

- (IBAction)fbButtonClicked:(UIButton *)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 
      if ([FBSDKAccessToken currentAccessToken]) { 


       [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/friends" parameters:nil] 
       startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result2, NSError *error) { 

        if (!error) { 
         NSLog(@"fetched user:%@", result2); 
        } 
       }]; 
      } 
     } 
    } 
}]; 

}

如果我有一個設備上安裝Facebook應用程序,然後代碼工作正常。當我沒有安裝Facebook應用程序時,則在瀏覽器中打開Facebook。在這裏,'result.isCancelled'被設置爲'YES',我沒有得到所需的結果。

回答

6
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [[FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url 
               sourceApplication:sourceApplication 
                annotation:annotation]; 
} 

需要在appDelegate.m

+0

我可以證實這是解決方案。在解決這個問題之前,我遇到了很多問題。希望Facebook也能處理錯誤。 –

+2

仍然我得到相同的結果 –

+0

@PatelJigar你解決了你的問題? – Alok

0

對我來說,原因是不同的

下面一行造成result.isCancelled總是真的... IDK的爲什麼

[login logInWithReadPermissions:@[@"public_profile", @"email", @"gender"] 

改成這個後......它的工作

[login logInWithReadPermissions:@[@"public_profile"] 
相關問題