我使用Twitter的结构创建了一个基本的应用程序,允许用户在我的应用程序中发推文并提供Twitter登录。每件事都是我想要的。
我的应用如何工作
如果用户没有登录到Twitter,我的应用程序允许他登录,如果他登录,则直接允许他发推文。
现在大部分来了
正如我在许多应用程序中看到的,我可以从应用程序中删除我已签名的帐户。而且我无法获得任何帮助我实现此目的的方法。我想允许用户在他/她想要的时候在我的应用程序中从twitter注销。
我用谷歌搜索,但我没有找到任何东西
这是我的代码:
- (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]);
}
}];
}
更新:2016年5月 - 框架已更改,因此此答案不再相关。
看到这个答案:https://stackoverflow.com/a/35765833/940709和这个答案:https://stackoverflow.com/a/30916904/940709而不是。
[[[Twitter sharedInstance] sessionStore] logOutUserID:USERID];
这是来自Foundation框架的Cookie的一个问题我在下面的代码的帮助下解决了这个问题
NSURL *url = [NSURL URLWithString:@"https://api.twitter.com"];
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url];
for (NSHTTPCookie *cookie in cookies)
{
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
你需要使用下面的代码
[[[Twitter sharedInstance] sessionStore] logOutUserID:USERID];
提供要注销的用户的用户标识。
这是Swift 3最简单的答案:
let store = Twitter.sharedInstance().sessionStore
if let userID = store.session()?.userID {
store.logOutUserID(userID)
}
或者您可以使用Naeem的答案,但在store.session之后添加()
退出代码来自Twitter文档:
Objective-C的
TWTRSessionStore *store = [[Twitter sharedInstance] sessionStore];
NSString *userID = store.session.userID;
[store logOutUserID:userID];
迅速
let store = Twitter.sharedInstance().sessionStore
if let userID = store.session()?.userID {
store.logOutUserID(userID)
}
对于Swift试试这个,
/**
* 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)
首先确保某些用户已登录,然后执行注销。
NSString *signedInUserID = [TWTRAPIClient clientWithCurrentUser].userID;
if (signedInUserID) {
[[Twitter sharedInstance].sessionStore logoutUserID:signedInUserID];
}
虽然登录提及方法为webBasedForceLogin,但它不会创建进入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)
}
使用以下:
[TWTRSessionStore logout]
推荐使用:
[Twitter logOut]
已弃用。
鼓励用户调用 - [TWTRSessionStore logout]
而不是直接在Twitter
实例上调用此方法。