2016-12-17 4 views
0

У меня очень простой проект iOS, где я использую кнопку входа в систему Twitter/Fabric для входа пользователя в мое приложение.Кнопка входа в систему Twitter/Fabric не работает должным образом

Мне удалось получить кнопку входа в систему Fabric. Когда пользователь нажимает кнопку входа в Twitter, они автоматически аутентифицируются (это если они вошли в приложение Twitter), в противном случае пользователю будет предоставлен экран входа в Twitter.

Я не уверен, почему пользователь автоматически аутентифицируется, когда они вошли в приложение Twitter на своем телефоне.

Есть ли способ использовать Twitter/Fabic API для открытия приложения Twitter и попросить разрешения предоставить доступ к моему приложению, аналогичному входу в Facebook, даже если пользователь зарегистрирован в приложении Twitter.

Это то, что мой AppDelegate выглядит следующим образом:

Twitter.sharedInstance().start(withConsumerKey: "someKey", consumerSecret: "someSecret") 
Fabric.with([Twitter.self]) 

Это то, что мой ViewController выглядит следующим образом:

@IBOutlet private weak var twitterLoginButton: TWTRLogInButton! 

// and 
twitterLoginButton.logInCompletion = {(session, error) in 
     if error != nil { 
      print("ERROR: \(error)") 
     } else { 
      if let unwrappedSession = session { 
       print(unwrappedSession.userName) 
      } 
     } 
} 

Twitter.sharedInstance().logIn { (session, error) in 
     if let unwrappedSession = session { 
      print("Signed in as: \(unwrappedSession.userName)") 
     } else { 
      print("ERROR: \(error)") 
     } 
} 

ответ

1

Fabric documentation говорит, что первый по умолчанию для входа в систему, чтобы пройти через Twitter (это может быть причиной того, что ваш пользователь автоматически аутентифицируется, если он уже зарегистрирован в приложении), в противном случае он будет проходить через входной поток webAuth.

«Чтобы заставить поток журнала использовать веб-поток OAuth, передайте метод TWTRLoginMethodWebBased соответствующим методам ведения журнала».

// If using the TWTRLoginButton 
let logInButton = TWTRLogInButton() { session, error in 
} 
logInButton.loginMethods = [.webBased] 

Так что, если вы хотите, чтобы заставить пользователя пройти через веб-потока, попробуйте добавить в код: twitterLoginButton.loginMethods = [.webBased]