Con*_*r V 5 twitter firebase swift firebase-authentication twitterkit
我正在使用 TwitterKit 和 Firebase 来允许用户使用 Twitter 登录。我第一次尝试使用 Twitter 登录时失败并出现错误:
[TwitterCore] 无法验证会话凭据。2018-07-11 13:57:20.999365-0400 Social_notes[6794:1892888] [TwitterKit] 确实遇到了消息“无法保存会话”的错误:错误域=NSURLErrorDomain 代码=-1005“网络连接丢失。” UserInfo = {NSUnderlyingError = 0x1c044dcb0 {错误域= kCFErrorDomainCFNetwork代码= -1005“(null)”UserInfo = {_kCFStreamErrorCodeKey = 57,_kCFStreamErrorDomainKey = 1}},NSErrorFailingURLStringKey = https://api.twitter.com/1.1/account/verify_credentials .json、 NSErrorFailingURLKey= https://api.twitter.com/1.1/account/verify_credentials.json、 _kCFStreamErrorDomainKey=1、 _kCFStreamErrorCodeKey=57、 NSLocalizedDescription=网络连接丢失。} 2018-07-11 13:57:21.413753 -0400 Social_notes[6794:1892888] [TwitterKit] 确实遇到了错误,消息为“获取用户身份验证令牌时出错。”:Error Domain=TWTRLogInErrorDomain Code=-1“回调 URL 未批准用于此客户端应用程序。批准的回调 URL 可以在您的应用程序设置” UserInfo={NSLocalizedDescription=此客户端应用程序未批准回调 URL。可以在应用程序设置中调整批准的回调 URL} Twitter 登录错误:请求失败:禁止 (403)
但如果我再次尝试使用 Twitter 登录,它就可以正常工作。
信息表
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>twitterkit-XXX</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>twitter</string>
<string>twitterauth</string>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
Run Code Online (Sandbox Code Playgroud)
应用程序委托
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = UINavigationController(rootViewController: ViewController())
FirebaseApp.configure()
Twitter.sharedInstance().start(withConsumerKey:"XXX", consumerSecret:"XXX")
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return Twitter.sharedInstance().application(app, open: url, options: options)
}
Run Code Online (Sandbox Code Playgroud)
Twitter 登录按钮代码
let twitterLoginBtn = TWTRLogInButton { (session, err) in
if let err = err {
print("Twitter Login Error: \(String.init(describing: err.localizedDescription))")
return
}
guard let token = session?.authToken else { return }
guard let secret = session?.authTokenSecret else { return }
let credential = TwitterAuthProvider.credential(withToken: token, secret: secret)
Auth.auth().signIn(with: credential, completion: { (user, err) in
etc etc....
Run Code Online (Sandbox Code Playgroud)
这显然是 TwitterKit 的问题。这就是我解决它的方法:
let store = TWTRTwitter.sharedInstance().sessionStore
store.reload()
for case let session as TWTRSession in store.existingUserSessions() {
store.logOutUserID(session.userID)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1232 次 |
| 最近记录: |