Twitter/Fabric 登录按钮只能使用一次。

8

我已经成功使用了Fabric登录按钮 (TWTRLogInButton, https://dev.twitter.com/twitter-kit/ios-reference/twtrloginbutton)。

在我的Swift应用程序中,我可以进行身份验证、发出调用等操作。唯一的问题是,我实现了一个“注销”按钮,该按钮调用Twitter.logOut()。

根据文档的说明 (https://dev.twitter.com/twitter-kit/ios-reference/twitter),这会删除本地会话,但不会使远程会话失效。这样一来,一旦我进行了身份验证,然后退出登录,如果我再次点击“登录”按钮,我就会以相同的用户身份登录,从而有效地阻止我切换用户。

有什么帮助吗?


是的,我也遇到了这个问题。请告诉我们解决方案。 - Gopal Devra
也许这个答案可以帮助你? - Mike
4个回答

2

使用方法

[[Twitter sharedInstance] logInWithMethods:TWTRLoginMethodWebBasedForceLogin completion:{}]

参数 TWTRLoginMethodWebBasedForceLogin

  • 提供一个不使用 Safari 缓存会话的 Web 视图。允许开发者提供多用户功能,支持多个 Twitter 账户。

2
你们面临的未完全注销问题实际上与iOS持久化系统帐户更相关。如果用户已经在iOS上登录,则TwitterKit会自动登录该用户。对于使用kiosk的用例,您可以通过以下步骤解决此行为问题:
  1. 在“设置”>“Twitter”中登录Twitter
  2. 切换到您的应用程序并尝试使用Twitter登录
  3. 当授予权限对话框出现时,拒绝访问Twitter帐户:

Twitter account access dialog

这样可以防止TwitterKit访问您的系统帐户,并且每个用户都必须登录。希望这可以帮助到您!

(最初Twitter.sharedInstance().logOut()销毁本地会话...)


2

logOut是一个类方法,你是否调用了它:

 Twitter.sharedInstance().logOut()

是的,我做了,结果就是我所描述的。 - pistacchio
我使用了Twitter Digits API,注销清除了会话并允许我使用另一个用户登录。很奇怪... - Felix Dumit

1
我也遇到了这个问题,但似乎这就是它的行为方式,Twitter使用Accounts框架在操作系统级别上“保存”凭据。您可以在此处查看:
打开手机上的设置->Twitter,您会看到帐户,进入该帐户并“删除帐户”
一旦您删除帐户,您会发现当您启动应用程序并尝试登录Twitter时,您将被要求进行登录。
添加帐户后,没有办法将帐户取出(除非Twitter支持并公开此功能)。用户必须手动进入“设置->Twitter”并从中删除帐户,以便能够登录到另一个帐户。
此外,我注意到当您将另一个帐户添加到Twitter中并尝试登录时,您将有机会在使用[[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session,NSError *error)时登录任何一个帐户
编辑:经过进一步研究,如果用户允许应用程序使用“Twitter”帐户,则可以访问帐户框架并从那里删除帐户:

https://developer.apple.com/library/mac/documentation/Accounts/Reference/ACAccountStoreClassRef/index.html

干杯!


这基本上是之前版本的工作方式。与iOS的集成以及需要通过设置注销的需求。虽然痛苦,但这是Crackbook和Twitter在iOS上实现的一部分。 - elliotrock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接