2015-03-10 36 views
8

Zrobiłem podstawową aplikację za pomocą Twittera tkaniny, która pozwala użytkownikowi na tweet w mojej aplikacji i Podaj Login z Twitter.Every rzeczy działa I Wanted.Jak dokonać wylogowania użytkownika z twittera Tkanina ios

Jak moja aplikacja działa

Jeśli użytkownik nie zalogować się do Twittera mojej aplikacji pozwala mu zalogować, a jeśli on jest logowanie następnie bezpośrednio pozwala mu ćwierkać.

Teraz duża część Pochodzi

jak widziałem w wielu Apps mogę usunąć moje konto z podpisaną app.And nie jestem w stanie uzyskać żadnej metody, która pomoże mi to osiągnąć. Chcę zezwolić użytkownikowi na wylogowanie się ze Twittera w mojej aplikacji, kiedy tylko zechce.

google ale nie znaleźliśmy niczego

Tu jest mój kodu:

- (IBAction)LogOut:(id)sender 
{ 
    [[Twitter sharedInstance]logOut]; 
} 

- (IBAction)LogMeIn:(id)sender 
{ 
[[Twitter sharedInstance] logInWithCompletion:^ 
(TWTRSession *session, NSError *error) { 
    if (session) { 
     NSLog(@"signed in as %@", [session userName]); 
     [LoginButton setTitle:@"LogOut" forState:normal]; 

    } else { 
     NSLog(@"error: %@", [error localizedDescription]); 
    } 
}]; 
} 

Odpowiedz

8

UPDATE: Maj 2016 - Framework został zmieniony tak, to odpowiedź nie jest już istotne.

Zobacz tę odpowiedź: https://stackoverflow.com/a/35765833/940709 i taką odpowiedź: https://stackoverflow.com/a/30916904/940709 zamiast.

[[[Twitter sharedInstance] sessionStore] logOutUserID:USERID];

+0

Jak mogę nazwać .. doc daje tylko ja ** - (void) wylogowanie ** ale nie pokazuje, jak używać – Dalvik

+0

Przedmiotem twitter jest pojedyncza. Zadzwoń [[Twitter sharedInstance] logOut]; w twoim kodzie. – SeanCAtkinson

+0

Po uruchomieniu tego kodu nic się nie dzieje ... Po wylogowaniu po naciśnięciu przycisku logowania pokazuje, że jestem już zalogowany – Dalvik

14

to był problem z NSCookie z ram Fundacji i ja slove tej kwestii z pomocą poniżej kod

NSURL *url = [NSURL URLWithString:@"https://api.twitter.com"]; 
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url]; 
for (NSHTTPCookie *cookie in cookies) 
{ 
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie]; 
} 
+0

... nie wiem, dlaczego ta odpowiedź ma tylko 2 wznowienia. jest to jedyne rozwiązanie, które udało mi się znaleźć, aby skutecznie wylogować się z Twittera przy użyciu tkaniny. dziękuję bardzo to świetnie –

+1

Użyłem tego kodu, ale nadal nie mogę zmienić użytkowników. Umieściłem to tuż po: [[Twitter sharedInstance] logOut]; Jakieś pomysły? –

+0

proszę sprawdzić ustawienie systemu Twitter konto wylogowane czy nie? jeśli nie ma żadnego zalogowanego użytkownika, powinien on działać poprawnie. –

-1

Zastosowanie poniżej:

[TWTRSessionStore logout] 

Przestarzałe :

[Twitter logOut] 

jest przestarzałe.

Użytkownicy są zachęcani do wywoływania - [TWTRSessionStore logout] zamiast wywoływania tej metody bezpośrednio w instancji Twitter.

+0

Nie wygląda na to, że 'TWTRSessionStore' ma metodę' wyloguj', czy posiadasz łącze do dokumentacji? – zevarito

+0

[[Twitter sharedInstance] sessionStore] logOutUserID: @ "xxxxxx"] – JAHelia

13

Trzeba skorzystać z poniższego kodu

[[[Twitter sharedInstance] sessionStore] logOutUserID:USERID]; 

podać identyfikator użytkownika użytkownika, którego chcesz się wylogować.

+0

Od '[[Twitter sharedInstance] logOut];' będzie przestarzałe - myślę, że to powinna być zaakceptowana odpowiedź. – orenk86

+0

orenk86: Tak i dziękuje –

0

Najpierw upewnij się, że jakiś użytkownik jest zalogowany, a następnie wykonaj wylogowanie.

NSString *signedInUserID = [TWTRAPIClient clientWithCurrentUser].userID; 
if (signedInUserID) { 
    [[Twitter sharedInstance].sessionStore logoutUserID:signedInUserID]; 
} 
2

Dla Swift spróbować,

/** 
* Deletes the local Twitter user session from this app. This will not remove the system Twitter account nor make a network request to invalidate the session. 
* 
* @param userID ID of the user to log out 
*/ 
Twitter.sharedInstance().sessionStore.logOutUserID(userId) 
3

Kod Wyloguj Od Twitter Docs:

Objective-C

TWTRSessionStore *store = [[Twitter sharedInstance] sessionStore]; 
NSString *userID = store.session.userID; 

[store logOutUserID:userID]; 

Swift

let store = Twitter.sharedInstance().sessionStore 

if let userID = store.session?.userID { 
    store.logOutUserID(userID) 
} 
6

To najlepszy prosta odpowiedź na Swift 3:

let store = Twitter.sharedInstance().sessionStore 
     if let userID = store.session()?.userID { 
      store.logOutUserID(userID) 
     } 

lub użyć odpowiedź Naeem, ale add() po store.session

0

Podczas metody wymieniania logów jako webBasedForceLogin, aby nie tworzyć wpisów w Safari Cac on.

private func twitterLogin() { 
    Twitter.sharedInstance().logIn(withMethods: .webBasedForceLogin, completion: { (session, error) in 
     if let error = error { 
      print(error.localizedDescription) 
     } 

     guard let session = session else { 
      return 
     } 

     print("success! Welcome \(session.userName).") 
     self.twitterButton.setTitle("TWITTER LOGOUT", for: .normal) 
    }) 
} 

private func twitterLogout() { 
    let sessionStore = Twitter.sharedInstance().sessionStore 
    if let userID = sessionStore.session()?.userID { 
     sessionStore.logOutUserID(userID) 
    } 

    twitterButton.setTitle("TWITTER LOGIN", for: .normal) 
} 
+0

logInwithMethods: nie jest dostępny w zestawie Twitter 3.0 – ARS