2013-04-14 30 views
8

我正在使用parse.com的API,並試圖將當前活動的用戶鏈接到他的Facebook帳戶。Parse.com - 另一個用戶已經鏈接到此facebook ID

我一直bumbing到:

Another user is already linked to this facebook id 

至於我的問題:我如何獲得用戶的連接Facebook的帳號?我想將當前的匿名用戶切換爲活動和登錄用戶。

謝謝

回答

13

我通過註銷當前用戶,然後登錄解決了這個,效果很好。

[PFFacebookUtils linkUser:[PFUser currentUser] permissions:permissionsArray block:^(BOOL success, NSError *error) { 
    if (!success) { 
     if (!error) { 
      NSLog(@"User Cancelled"); 
     } else { 
      if(error.code == 208) { 
       [PFUser logOut]; 
       [PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) { 
        if(error) { 
         NSLog(@"An error occurred: %@", error); 
        } else { 
         // Carry on 
        } 
       }]; 
      } else { 
       NSLog(@"An error occurred: %@", error); 
      } 
     } 
    } else { 
     // Carry on 
    } 
}]; 
+0

很好的解決方法,但仍然出現錯誤消息,但用戶在後端正確鏈接到facebook用戶。希望通過解析本身來解決這個問題。 – gpichler

+0

我還添加了'[[PFUser currentUser] delete]'將其從數據庫中刪除給匿名用戶,因爲這個用戶不再需要了,而且會成爲一個失敗的參考。 – gpichler

+0

不幸的是,這看起來像是最好的答案。您將丟失當前用戶的所有數據,但Facebook鏈接將正常完成。另一個問題是用戶得到2個提示來授權Facebook。 – zirinisp

0

我面臨同樣的問題,解決方案甚至更好,只是忽略此錯誤。這是一種警告。它被拋出,但用戶被鏈接到另一個帳戶。

+2

這是不正確的......只是測試了它,而事實並非如此 – TWright

2

您可以忽略它,因爲它是一個警告,通知您Facebook帳戶已經鏈接(對於您的情況是匿名用戶),而不是錯誤。

最後指定的用戶將鏈接到Facebook帳戶。因此,您的初衷 - 「將當前活動用戶鏈接到他的臉書帳戶」即使發出警告,以通知您匿名用戶已鏈接到同一個Facebook帳戶,也可以發揮作用。

要避免此警告,請在將Facebook用戶與當前活動用戶關聯之前,先註銷匿名用戶。

+0

[PFUser logOut]; fb登錄和鏈接之前爲我工作 – Leo

+2

實際上,如果您在登錄到FB之前總是註銷匿名用戶,那麼如果您存儲用戶在FB連接之前執行的用戶數據/首選項/活動,將會失去該連接,因爲這會創建第二個用戶條目同一個人,所以我認爲這是更好的忽略它或在傑里米的回答 – PetrV

+1

但這仍然停止共享 - 所以你不能忽略它... –

-1

檢查你所要求的權限當您嘗試這樣的鏈接:

[PFFacebookUtils linkUser:[PFUser currentUser] permissions:[NSArray arrayWithObjects:@"publish_stream",@"publish_actions", @"user_about_me", @"user_photos", @"read_stream",@"friends_photos",@"email",@"user_birthday",@"user_location", nil] block:^(BOOL succeeded, NSError *error) { 
      if (succeeded) { 
       [self login:nil]; 
       NSLog(@"Woohoo, user logged in with Facebook!"); 
      }else{ 
       NSLog(@"%@", [[error userInfo] objectForKey:@"error"]); 

        NSLog(@"An error occurred: %@", error); 

      } 
     }]; 

在我來說,我是路過零參數有關的權限。可能會對其他人有用

相關問題