El button de inicio de session de Twitter / Fabric solo funciona una vez.

Estoy utilizando, con éxito, el button de Conexión de la Tela (TWTRLogInButton, https://dev.twitter.com/twitter-kit/ios-reference/twtrloginbutton ).

En mi aplicación Swift puedo autenticarme, hacer llamadas y todo. El único problema es que implementé un button "Cerrar session" que llama a Twitter.logOut ().

Según lo especificado por la documentation ( https://dev.twitter.com/twitter-kit/ios-reference/twitter ), esto elimina la session local pero no invalida la session remota. El efecto es que una vez que estoy autenticado y luego desconectado, si presiono el button "Iniciar session" de nuevo, estoy conectado de nuevo con el mismo usuario, lo que me impide efectivamente cambiar de usuario.

¿Alguna ayuda?

El logOut es un método de class, ¿llamaste a:

Twitter.shanetworkingInstance().logOut() 

El problema de cierre de session incompleto al que se enfrentan es en realidad más relacionado con las counts de sistema persistentes de iOS. TwitterKit registra automáticamente a un usuario si ya había iniciado session en iOS. Puede solucionar este comportamiento en el caso de uso del quiosco con estos pasos:

  1. Inicie session en Twitter en Configuración> Twitter
  2. Cambia a tu aplicación e intenta iniciar session con Twitter.
  3. No permitir el acceso a las counts de Twitter cuando aparece el cuadro de dialog de acceso a la concesión:

Diálogo de acceso a la cuenta de Twitter

Esto evita que TwitterKit acceda a las counts de su sistema y cada usuario tendrá que iniciar session. ¡Espero que esto ayude!

(Inicialmente Twitter.shanetworkingInstance().logOut() destruye la session local …)

método de uso

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

Parámetro TWTRLoginMethodWebBasedForceLogin

  • Presenta una vista web que no utiliza ninguna session en caching de Safari. Permite al desarrollador proporcionar funcionalidad multiusuario con varias counts de Twitter.

Me encontré con este problema también, pero parece que así es como se comporta, Twitter "guarda" las cnetworkingenciales en un nivel de sistema operativo utilizando el marco de Cuentas. Puedes ver esto aquí:

vaya a Configuraciones en su teléfono -> Twitter y verá que la count allí entra en la count y "Eliminar count"

una vez que elimine la count, verá que cuando inicie su aplicación e intente iniciar session en Twitter, se le pedirá que inicie session.

Una vez que se agrega una count, no hay manera de sacar la count (a less que Twitter lo admita y lo haga público). El usuario deberá ingresar manualmente a Configuración -> Twitter y borrar la count desde allí para poder iniciar session en una count diferente

También noté que cuando agrega otra count a Twitter, intentando iniciar session, tendrá la oportunidad de iniciar session en cualquiera de las counts cuando use [[Twitter shanetworkingInstance] logInWithCompletion:^(TWTRSession *session, NSError *error)

editar: Tras una investigación adicional si el Usuario permite que la aplicación use counts de "Twitter", puede acceder al Marco de counts y eliminar la count desde allí:

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

¡Aclamaciones!