How to make User logout from twitter fabric ios

2019-01-26 09:04发布

I have made a basic app using Twitter's fabric that allows user to tweet within my app and Provide Login With Twitter.Every things works a I Wanted.

How my app Works

If the user doesn't logged in to twitter my app allows him to login and if he is login then directly allows him to tweet.

Now the Big Part Comes

As I saw in many Apps I Can Remove my signed account from the app.And I am not able to get any method that help me to achieve this. I want to allow user to logout from twitter within my app whenever he/She wants.

I googled but i doesn't find anything

Here Is my Code:

- (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]);
     }
 }];
}

9条回答
地球回转人心会变
2楼-- · 2019-01-26 09:42

UPDATE: May 2016 - Framework has changed so this answer is no longer relevant.

See this answer: https://stackoverflow.com/a/35765833/940709 and this answer: https://stackoverflow.com/a/30916904/940709 instead.

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

查看更多
何必那么认真
3楼-- · 2019-01-26 09:46

First make sure some user is signed in, then perform logout.

NSString *signedInUserID = [TWTRAPIClient clientWithCurrentUser].userID;
if (signedInUserID) {
   [[Twitter sharedInstance].sessionStore logoutUserID:signedInUserID];
}
查看更多
放荡不羁爱自由
4楼-- · 2019-01-26 09:51

Logout Code From 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)
}
查看更多
聊天终结者
5楼-- · 2019-01-26 09:52

This is the best simple answer for Swift 3:

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

or you can use Naeem's answer but add () after store.session

查看更多
虎瘦雄心在
6楼-- · 2019-01-26 09:52

While login mention method as webBasedForceLogin, so that it will not create entry into Safari Cache.

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)
}
查看更多
SAY GOODBYE
7楼-- · 2019-01-26 09:56

You need to use below code

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

Provide user id of the user you want to logout.

查看更多
登录 后发表回答