2015-04-23 19 views
6

jestem w stanie zalogować się do Twittera za pośrednictwem mojej aplikacji przy użyciu tego kodu Twitter tkanina:Jak zapisać sesję logowania w usłudze Twitter Fabric i uzyskać do niej dostęp (iOS/Swift)?

let logInButton = TWTRLogInButton(logInCompletion: { 
     (session: TWTRSession!, error: NSError!) in 
      // play with Twitter session 
      if (session != nil) { 
       println("signed in as \(session.userName)"); 
       self.TWUsernameLabel.text = "Logged in as @" + session.userName 
     } else { 
      println("error: \(error.localizedDescription)"); 
     } 
    }) 

Kiedy klikam przycisk logowania, to skłania mnie do zatwierdzania logowania, a następnie loguje mnie, czy ona wie Zatwierdziłem już login i logował mnie. Działa to jak czar i zabrał wszystkie dziesięć minut na skonfigurowanie. Niesamowity.

Mam już login e-mailowy, aby uzyskać dostęp do aplikacji. Chciałbym przechowywać konto użytkownika zalogowanego na Twitterze w tej samej bazie danych, więc gdy użytkownik zaloguje się za pomocą poczty e-mail, znam już ich Twittera (jeśli wcześniej się zalogowali) i nie muszą się ponownie logować . Powodem, dla którego robię logowanie przez e-mail jest to, że Twitter jest ważną funkcją w mojej aplikacji, ale nie jest to całkowite wymaganie.

Problem polega na tym, że nie mam pojęcia, jak uzyskać dostęp do session poza tym, kiedy kliknięto przycisk i logInCompletion, i nie wiem, jakie zmienne przechowywać po pierwszym zalogowaniu/sprawdzeniu przy użyciu aplikacji.

Wiele razy czytałem dokumentację Twitter Text, ale nie jest napisane szybko, więc jest to dość mylące. Jakieś pomysły? Dzięki

Odpowiedz

3

Jeśli jest aktualnie aktywna sesja powinna być w stanie uzyskać do niego dostęp, podobnie jak docs powiedzieć

Twitter.sharedInstance().session() 

Jeśli użytkownik nie jest zalogowany w tej metody zwróci nil. Jeśli chcesz się dowiedzieć, czy ktoś jest już uwierzytelniony, po prostu sprawdź, czy ta metoda zwraca wartość, czy nie.

+0

dobrze, że było proste. Dzięki! Ale zanim sprawdzę to jako rozwiązanie, czy jest jakaś kwestia przechowywania informacji o Twitterze w mojej bazie danych użytkowników? Na wszelki wypadek przechowam nazwę użytkownika, ale mówię o niej z perspektywy sesji/logowania. Czy powinienem przechowywać klucz lub coś w tym stylu? (Zastanawiam się, w jaki sposób zapisujesz identyfikator sesji, a następnie sprawdzasz, czy jest przechowywany na komputerze.) Możliwe, że ten system został specjalnie zaprojektowany, aby tego uniknąć. Nie jestem pewny. Myśli? – Andrew

+0

Nie, nie bym go przechował. Twitter już to robi dla nas i jestem pewien, że radzą sobie z tym bardziej zdrowo, niż ty lub ja, z naszą własną implementacją. Jeśli sesja istnieje, są zalogowani na Twitterze. Jeśli nie, nie są. Powinieneś wziąć ich API za słowo na ten temat. – Dare

+0

Tak myślałem. Dzięki jeszcze raz. – Andrew

1

Zestaw Twitter automatycznie wyświetla ekran logowania, jeśli użytkownik nie zalogował się (sesja nie istnieje ..). Ale przed wywołaniem jakiegokolwiek przyszłego interfejsu API po prostu sprawdź, czy sesja jest ważna czy nie. W niektórych interfejsach API konieczne może być również przekazanie tej sesji.

if ([[Twitter sharedInstance] session]) { 

     TWTRShareEmailViewController *shareEmailViewController = 
     [[TWTRShareEmailViewController alloc] 
     initWithCompletion:^(NSString *email, NSError *error) { 
      NSLog(@"Email %@ | Error: %@", email, error); 
     }]; 

     [self presentViewController:shareEmailViewController 
          animated:YES 
         completion:nil]; 
    } else { 
     // Handle user not signed in (e.g. attempt to log in or show an alert) 
    } 
} 

nawet nie trzeba się martwić o przechowywanie i zarządzanie access token i access token secret.

+0

Cześć! Próbuję uzyskać sesję na Twitterze za pomocą tego kodu [sesja Twitter sharedInstance]].Zainstalowałem zestaw Twittera pod: pod 'Fabric' pod 'TwitterKit'. Ale kiedy uruchomiłem kompilację nie powiodło się: "Używanie niezadeklarowanego identyfikatora na Twitterze". Tak zaimportowałem #import . Czy możesz mi pomóc? –

+0

Napisałeś: '#import '? – NSPratik

+0

Nie. Czy muszę to dodać? –

0

Aby uzyskać dostęp do authToken, nazwa użytkownika lub identyfikator użytkownika dla zalogowanego użytkownika w sesji Swift 4 jest:

Twitter.sharedInstance().logIn(completion: { (session, error) in 
    if (session != nil) { 
     print(session!.authToken) 
     print(session!.userName) 
     print(session!.userID) 
    } else { 
     print(error?.localizedDescription) 
    } 
}) 
Powiązane problemy