2013-04-26 17 views
5

Używam parse.com jako backend mojej aplikacji, umożliwia on zalogowanie się za pośrednictwem swojego konta na Facebooku lub Twitterze. Posiada również funkcję łączenia serwisu twitter/facebook ze swoim wcześniej istniejącym kontem.Parse.com PFUser Łączenie konta twitter i facebook?

Oto problem:

Jeżeli logowania użytkownika poprzez jego facebook uwagę nowy PFUser jest tworzony na chmurze. Jeśli ten sam użytkownik ponownie zaloguje się przez swoje konto twitter, w chmurze zostanie utworzony inny PFUser. Teraz, jeśli użytkownik chce połączyć swoje konto o numerze facebook ze swoim kontem twitter, odpowiada na następujące pytania: parse.com "to konto na Twitterze jest już połączone z innym użytkownikiem."

Jak mogę połączyć tutaj dwa PFUsers? Czy ktokolwiek może zaproponować mi podejście do rozwiązania tego problemu?

+0

https://parse.com/questions/merging-pfusers –

+0

Sposób sugerowany tutaj umożliwi włączenie tylko jednego użytkownika na urządzenie. Nie chcę tego. Wszelkie inne sugestie? – Ashwani

Odpowiedz

3

żalem, wydaje się, że nie jest możliwe, aby mieć konto na Facebook lub Twitter połączony z więcej niż jednego PFUser. Ponadto wydaje się, że nie jest możliwe połączenie jeszcze dwóch wpisów PFUser - Zobacz Parse's answer here.

Zamiast tego można przechowywać dane w tabeli PFUser wyłącznie w celu autoryzacji, a resztę danych przechowywać w nowej i dedykowanej klasie analizy (np. UserData, wskazana przez wpisy PFUser).

W tym sensie będziesz mógł używać wielu wpisów PFUser wskazujących ten sam wpis UserData. Tak więc, jeśli masz poprzednio istniejący wpis PFUser powiązany z konkretnym kontem Twitter w zapleczu Parse, najlepiej, jeśli zalogujesz się do tego konkretnego PFUser, a następnie wskażesz ten wpis poprzednio istniejącemu wpisowi userData.

4

Nie widząc żadnego kodu, brzmi to tak, jakby dzwonić pod numer PFTwitterUtils logInWithBlock, gdy próbujesz połączyć konto na Twitterze. To byłoby niewłaściwe podejście, ponieważ stworzy on tylko nowego PFUsera, zamiast używać zarządzającego PFUser stworzonego przez zalogowanie się na facebooku.

Zamiast tego należy użyć metody PFTwitterUtils, aby połączyć bieżący numer PFUser z kontem na Twitterze. The Parse documentation pokazuje poniższy kod, aby to zrobić.

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

Przykro mi, ale źle mnie tu zrozumiałeś, już używam tego samego kodu, który napisałeś. Problem występuje, gdy próbuję połączyć konto twitter (które jest wcześniej połączone, tj. Inny PFUser) z moim bieżącym kontem. Zgłasza błąd, że to konto na Twitterze jest już połączone z jakimś innym użytkownikiem. Jak mogę to rozwiązać? – Ashwani

4

Można zrobić jedną rzecz, która jest:

po połączeniu z innym bieżący użytkownik dowolnego konta Facebook/Twitter trzeba odłączyć użytkownikowi w pewnym momencie. Powiedzmy, że po wylogowaniu musisz sprawdzić, czy aktualny użytkownik jest połączony z Facebookiem/Twitterem?

jeśli bieżący użytkownik jest połączony z dowolnym innym użytkownikiem trzeba odłączyć, dzięki czemu można ponownie połączyć użytkownika Facebook/Twitter z innymi użytkownikami, podobnie jak to

Na Facebooku użytkownik:

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

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

na Twitterze użytkownik:

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

       [PFTwitterUtils unlinkUserInBackground:[PFUser currentUser] block:^(BOOL Success,NSError *unlinkError){ 
        if(!unlinkError){ 
         // unlink user 
        }else{ 
         // Error while unlink 
        } 
}]; 
} 
Powiązane problemy