2013-04-14 14 views
8

Używam api parse.com i próbuję połączyć aktualnie aktywnego użytkownika z jego kontem na Facebooku.Parse.com - Inny użytkownik jest już podłączony do tego facebooka id

Trzymam bumbing do:

Another user is already linked to this facebook id 

Jak na moje pytanie: Jak mogę dostać użytkownika podłączonego Facebook ID? Chciałbym zmienić mojego bieżącego anonimowego użytkownika na aktywnego i zalogowanego użytkownika.

Dziękuję

Odpowiedz

13

Rozwiązałem to przez wylogowania bieżącego użytkownika, a następnie zalogować się. Działa dobrze.

[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

Dobre obejście problemu, jednak komunikat o błędzie nadal pojawia się, ale użytkownik jest poprawnie połączony z użytkownikiem Facebooka w backendach. Chciałbym, aby to rozwiązał sam Parse. – gpichler

+0

Dodałem także '[[PFUser currentUser] delete]', aby usunąć anonimowego użytkownika z bazy danych, ponieważ ten użytkownik nie będzie już potrzebny i będzie martwym referencją. – gpichler

+0

Niestety to wygląda jak najlepsza odpowiedź. Utracisz wszystkie dane bieżącego użytkownika, ale link do Facebooka zostanie wykonany prawidłowo. Innym problemem jest to, że użytkownik otrzymuje 2 monity o autoryzację Facebooka. – zirinisp

0

Zmierzyłem się z tym samym problemem, a rozwiązanie było jeszcze lepsze, po prostu zignoruj ​​ten błąd. To rodzaj ostrzeżenia. Zostaje on zgłoszony, ale użytkownik zostaje połączony z innym kontem.

+2

To nie jest prawda ... po prostu przetestowałem to i nie było tak w przypadku – TWright

2

Możesz go zignorować, ponieważ jest ostrzeżeniem informującym cię, że konto Facebooka było już połączone (w Twoim przypadku jest to anonimowy użytkownik), a nie błąd.

Ostatni przydzielony użytkownik zostanie powiązany z kontem na Facebooku. Tak więc pierwotna intencja - "Aby połączyć aktualnie aktywnego użytkownika z kontem na Facebooku" działa nawet wtedy, gdy zostanie wygenerowane ostrzeżenie, informujące, że anonimowy użytkownik był połączony z tym samym kontem na Facebooku.

Aby uniknąć tego ostrzeżenia, należy zawsze wylogować użytkownika anonimowego przed powiązaniem użytkownika Facebooka z aktualnie aktywnym użytkownikiem.

+0

do [PFUser logOut]; przed zalogowaniem fb i linkowaniem działa dla mnie – Leo

+2

faktycznie, jeśli zawsze wylogujesz anonimowego użytkownika przed zalogowaniem się do FB, stracisz to połączenie, jeśli przechowujesz dane użytkownika/preferencje/aktywność, które zrobił użytkownik przed połączeniem FB, ponieważ to utworzyłoby drugi wpis użytkownika dla ta sama osoba, więc myślę, że lepiej niż ją zignorować, lub jak w odpowiedzi Jeremy'ego – PetrV

+1

Ale to się nie kończy z dzieleniem - więc nie możesz tego po prostu zignorować ... –

-1

Sprawdź, czy jesteś z prośbą o uprawnieniach podczas próby połączenia tak:

[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); 

      } 
     }]; 

W moim przypadku mijał nil param dla uprawnień. Może być pomocny dla kogoś innego

Powiązane problemy