#ios #swift #twitter #twitter-fabric #twitterkit
#iOS #swift #Twitter #twitter-fabric #twitterkit
Вопрос:
У меня проблема с входом в Twitter на iOS. Если у пользователя установлена учетная запись в приложении «Настройки», я получаю следующую ошибку:
[TwitterKit] столкнулся с ошибкой с сообщением «Учетные данные системной учетной записи пользователя недействительны».: Ошибка Domain= TWTRLogInErrorDomain Code = 7 «Учетные данные системной учетной записи больше не действительны и их необходимо обновить в приложении «Настройки».» userInfo = {NSLocalizedDescription = Учетные данные системной учетной записи больше не действительны и необходимо будет обновить в приложении «Настройки»., NSLocalizedRecoverySuggestion = Пользователю было предложено посетить приложение «Настройки».}
И учетные данные действительны, я дважды проверяю это. Если в приложении «Настройки» нет учетной записи, мой вход в систему проходит так, как ожидалось. Метод, который я вызываю,:
Twitter.sharedInstance().logInWithCompletion {(session, error) -> Void in
Комментарии:
1. Вы можете использовать FHSTwitterEngine для входа в Twitter
2. @Jecky спасибо. Я решил это, используя другой метод.
3. @Nemanja не могли бы вы рассказать нам, какой метод вы использовали?
Ответ №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:
Я думаю, что следующий метод также должен работать.
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
}
- Информация.плист
Комментарии:
1. Это не работает для меня, это то же самое, что и в моем вопросе.
2. Да, похоже, это то же самое, но он хорошо работает с sdk, которые устанавливаются с помощью «fabric». Как вы добавили фреймворки Twitter?
3. Да, я добавил twitterkit и fabric kit с помощью pods и установил настройки Twitter, протестированные с помощью plist и программно.
4. Я обновил свой ответ, добавив немного кода, пожалуйста, проверьте, а также сообщите мне версию iOS, на которой вы это тестируете?
5. Да, это именно то, что я сделал. Я тестирую на iOS 10. Итак, мои шаги: 1) удалить учетную запись из настроек. 2) twitter предлагает мне войти в webview, и я вошел в систему. 3) Я выхожу из своего приложения и пытаюсь войти в систему снова. 4) Я получаю всплывающее окно, в котором говорится, что у меня нет действительных учетных данных и что я должен изменить их в настройках. Даже если я их изменю, это все равно не сработает. Метод в моем втором ответе работает так, как ожидалось. Я до сих пор не пробовал то, что Энтони написал в своем ответе.
Ответ №3:
Решил мою проблему, используя метод:
Twitter.sharedInstance().logInWithMethods(TWTRLoginMethod.WebBased, completion: {(session, error) -> Void in
Но все же думаю, что другой метод также должен работать.
Ответ №4:
Я сделал это, используя приведенный ниже код, может быть, это поможет
TWTRTwitter.sharedInstance().logIn(with: self, completion: { session, error in
if (session != nil) {
let client = TWTRAPIClient.withCurrentUser()
}
}