2015-09-15 22 views
5

tôi đã sử dụng mã này để FB đăng nhập:Tôi làm cách nào để sử dụng thông tin đăng nhập trong Facebook SDK 4.6 cho iOS?

@IBAction func fbloginbtn(sender: AnyObject) { 

    FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email","user_location","user_about_me", "user_photos", "user_website"], handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in 
     if (error == nil){ 
      let fbloginresult : FBSDKLoginManagerLoginResult = result 
      if(fbloginresult.grantedPermissions.contains("email")) 
      { 
       if((FBSDKAccessToken.currentAccessToken()) != nil){ 
        FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in 
         if (error == nil){ 
          //do sth 
         } 
        }) 
       } 
      } 
     } 
    }) 
} 

Nhưng loginwithreadpermissions bị phản đối trong SDK 4.6

Làm thế nào tôi nên thay đổi mã này?

+0

Chỉ cần đảm bảo, 4.6 là phiên bản SDK ** Facebook **, phải không? Không phải phiên bản SDK ** iOS **? (đó sẽ là quá cũ). –

+1

oh xin lỗi, đó là Facebook SDK cho iOS –

+0

Có lẽ nó là hiển nhiên đối với một người quen thuộc với Facebook SDK, nhưng đối với tất cả mọi người khác nó có thể hơi khó hiểu. Cảm ơn bạn đã sửa chữa nó. –

Trả lời

13

Nếu bạn xem tài liệu, bạn cũng sẽ thấy đề cập đến api thay thế. Từ các tài liệu của FBSDKLoginManager, nó nói:

- (void)logInWithReadPermissions:(NSArray *)permissions 
         handler:(FBSDKLoginManagerRequestTokenHandler)handler 
__attribute__((deprecated("use logInWithReadPermissions: fromViewController:handler: instead"))); 

Vì vậy, có một phương pháp mới, mà phải mất một tham số bổ sung của UIViewController là tốt, để xác định từ nơi tự đăng nhập được khởi xướng. Như tài liệu nói:

- (void)logInWithReadPermissions:(NSArray *)permissions 
       fromViewController:(UIViewController *)fromViewController 
       handler:(FBSDKLoginManagerRequestTokenHandler)handler; 

và giải thích cho các thông số nói:

fromViewController - Bộ điều khiển nhằm trình bày từ. Nếu không, bộ điều khiển chế độ xem trên cùng sẽ tự động được xác định tốt nhất là .

Kể từ khi, chỉ có một tham số bổ sung, bạn có thể thêm nó vào thực hiện như thế này:

FBSDKLoginManager().logInWithReadPermissions(["public_profile", "others"], 
          fromViewController:self //<=== new addition, self is the view controller where you're calling this method. 
          handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in 
}) 

Các xcode mới nhất cũng nên đề nghị bạn khi bạn viết, logInWithReadPermissions với tất cả các tùy chọn có sẵn.

+1

Một ví dụ trong nhanh chóng sẽ là hoàn hảo cho tôi như một người mới bắt đầu hiểu. –

+0

Xem chỉnh sửa của tôi, tôi đã thêm một mã đơn giản để nhanh chóng. –

+0

@AdilSoomro Tôi đã sử dụng để kiểm tra xem mã thông báo của tôi có hợp lệ để xác định xem người dùng có cần đăng nhập lại không. Bạn có thứ gì đó không? Điều này ở đây từng là mã của tôi: "if ([FBSession activeSession] .state == FBSessionStateOpen)". – Felipe

Các vấn đề liên quan