在iOS上使用Twitter登录

时间:2016-10-13 10:46:44

标签: ios swift twitter twitter-fabric twitterkit

我在iOS上登录Twitter时遇到问题。如果用户在“设置”应用程序中设置了帐户,则会出现以下错误:

  

[TwitterKit]确实在消息"用户的系统帐户中遇到错误   凭据无效。":错误域= TWTRLogInErrorDomain代码= 7   "系统帐户凭据不再有效且需要   在“设置”应用中进行更新。"的UserInfo = {NSLocalizedDescription =该   系统帐户凭据不再有效且需要   在“设置”应用中更新。,NSLocalizedRecoverySuggestion =用户   系统已提示您访问“设置”应用。}

凭证有效,我仔细检查。 如果“设置”应用中没有帐户,我的登录信息会按预期进行。 我称之为的方法是:

Twitter.sharedInstance().logInWithCompletion {(session, error) -> Void in

4 个答案:

答案 0 :(得分:1)

我认为以下方法也应该有用。

Twitter.sharedInstance().logIn(withCompletion: {(session: TWTRSession, error: Error) -> Void in
    if session {
        print("@\(session.userName()) logged in! (\(session.userID()))")
    }
    else {
        print("error: \(error!.localizedDescription)")
    }
})
  

它需要设置Twitter应用程序的帐户凭据。

更多内容: - AppDelegate.m

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]) -> Bool {
    //Twitter
    Twitter.sharedInstance().start(with: kTwitterConsumerKey, consumerSecret: kTwitterConsumerSecret)
    Fabric.with([Twitter.sharedInstance()])
    return true
}
  • 的Info.plist

enter image description here

答案 1 :(得分:1)

Twitter.sharedInstance().logIn { session, error in
        if (session != nil)
        {
            print("signed in as \(session!.userName)");
            let client = TWTRAPIClient.withCurrentUser()
            let request = client.urlRequest(withMethod: "GET",
                url: "https://api.twitter.com/1.1/account/verify_credentials.json",
                parameters: ["include_email": "true", "skip_status": "true"],
                error: nil)
            client.sendTwitterRequest(request)
            { response, data, connectionError in
                print(response)
            }
        }
        else
        {
            print("error: \(error!.localizedDescription)");
        }
        }
    }

这对 swift3

有帮助

答案 2 :(得分:0)

使用方法解决了我的问题:

Twitter.sharedInstance().logInWithMethods(TWTRLoginMethod.WebBased, completion: {(session, error) -> Void in

但仍然认为其他方法也应该有效。

答案 3 :(得分:0)

我做到了,就像使用下面的代码一样,可能是帮助

 TWTRTwitter.sharedInstance().logIn(with: self, completion: { session, error in
        if (session != nil) {
            let client = TWTRAPIClient.withCurrentUser()
          }
   }