2013-04-26 137 views
5

我使用parse.com作爲我的應用程序的後端,它使用戶能夠通過他的Facebook或Twitter帳戶登錄。此外,它還具有將twitter/facebook鏈接到他原有帳戶的功能。Parse.com PFUser鏈接Twitter和Facebook帳戶?

這裏的問題是:

如果在雲中創建通過他facebook帳戶的新PFUser用戶登錄。 如果同一用戶再次登錄其twitter帳戶,則會在雲上創建另一個PFUser。 現在,如果用戶想要將他的facebook帳戶與其twitter帳戶關聯,則parse.com回覆時顯示「此Twitter帳戶已連接到其他用戶」。

我如何在這裏合併兩個PFUsers?任何人都可以建議我解決這個問題的方法嗎?

+0

https://parse.com/questions/merging-pfusers – 2013-04-26 05:06:33

+0

這裏建議的方式將使每個設備只有一個用戶。我不想那樣。任何其他建議? – Ashwani 2013-04-26 05:42:45

回答

3

遺憾的是,它似乎是不可能有鏈接到多個PFUser一個Facebook或Twitter帳戶。此外,似乎不可能再合併兩個更多的PFUser條目 - 請參閱Parse's answer here

您可能想要做的是將數據嚴格保存在PFUser表中,以便進行授權,並將其餘數據保留在新的專用Parse類(例如userData,由PFUser條目指向)中。

從這個意義上說,您將能夠使用多個指向相同userData條目的PFUser條目。因此,如果先前存在PFUser條目鏈接到Parse後端中的特定Twitter帳戶,則最好使用戶登錄到該特定PFUser,然後將該條目指向先前存在的userData條目。

4

沒有看到任何代碼,這聽起來像你試圖鏈接一個Twitter帳戶時打電話PFTwitterUtils logInWithBlock。這將是錯誤的方法,因爲它只會創建一個新的PFUser,而不是使用通過登錄Facebook創建的existring PFUser。

您想要做的是使用PFTwitterUtils方法將當前的PFUser與Twitter帳戶關聯起來。 The Parse documentation顯示了以下代碼。

PFUser *user = [PFUser currentUser]; 
if (![PFTwitterUtils isLinkedWithUser:user]) { 
    [PFTwitterUtils linkUser:user block:^(BOOL succeeded, NSError *error) { 
     if ([PFTwitterUtils isLinkedWithUser:user]) { 
      NSLog(@"Woohoo, user logged in with Twitter!"); 
     } 
    }]; 
} 
+0

我很抱歉,但你讓我錯了,我已經使用了你發佈的相同代碼。當我嘗試將Twitter帳戶(之前已連接,即另一個PFUser)鏈接到我的當前帳戶時,會發生問題。它會拋出此Twitter帳戶已連接到其他用戶的錯誤。我該如何解決這個問題? – Ashwani 2013-04-30 04:28:55

4

你可以做的一件事是:

當你鏈接你需要在某個時間點斷開鏈接的用戶任何彼此的Facebook/Twitter賬戶當前用戶

。讓我們說,當你註銷時,你需要檢查當前用戶是否與Facebook/Twitter鏈接?

如果您當前的用戶與任何其他用戶的連接需要斷開鏈接,這樣就可以再次與其他用戶聯繫起來的Facebook/Twitter的用戶,像這樣

對於Facebook的用戶:

if([PFFacebookUtils isLinkedWithUser:[PFUser currentUser]]){ 

       [PFFacebookUtils unlinkUserInBackground:[PFUser currentUser] block:^(BOOL Success,NSError *unlinkError){ 
        if(!unlinkError){ 
         // User unlinked 
        }else{ 
         // Erro while unlink user 
        } 
       }]; 
      } 

對於Twitter的用戶:

if([PFTwitterUtils isLinkedWithUser:[PFUser currentUser]]){ 

       [PFTwitterUtils unlinkUserInBackground:[PFUser currentUser] block:^(BOOL Success,NSError *unlinkError){ 
        if(!unlinkError){ 
         // unlink user 
        }else{ 
         // Error while unlink 
        } 
}]; 
} 
相關問題