При использовании iOS Twitter Kit возникает ошибка «Запрос не выполнен: запрещено»

У меня очень похожая проблема >на этот и я не могу найти ответ, так как этот вопрос не был решен.

Проблема в том, что я получаю это в консоли Xcode после настройки Twitter Kit и Fabric, добавляя ключи secret и api для twitter в plist:

Домен ошибки = код TwitterAPIErrorDomain = 200 «Запрос не выполнен: запрещен (403)» ">https://api.twitter.com/1.1/guest/activate.json, NSLocalizedDescription=Ошибка запроса: запрещено (403), NSLocalizedFailureReason=Ошибка API Twitter: Запрещено. (код 200)}

Мой код, который использует Twitter Kit и выдает указанную выше ошибку:

NSString *userID = [Twitter sharedInstance].sessionStore.session.userID;
TWTRAPIClient *client = [[TWTRAPIClient alloc] initWithUserID:userID];

[client loadUserWithID:kTwitterUser completion:^ (TWTRUser *user, NSError *error) {
     if (error) {
        NSLog(@"ERROR CARL %@", error);
     } else {
        NSLog(@"User %@", user);
     }
}];

person Yevheniia Zelenska    schedule 18.09.2015    source источник
comment
У меня такая же проблема, но решение, учитывая, что эта ссылка сработала для меня stackoverflow.com/a/49606961/8334818   -  person Pramod More    schedule 02.04.2018


Ответы (3)


Это довольно старый вопрос, но я хотел дать ответ на случай, если кто-нибудь столкнется с этим.

Эта ошибка более или менее указывает на то, что ваши «consumerKey» и «consumerSecret» неверны.

Глупость в том, что есть 3 способа сгенерировать это, и все они создают разные ключи. Один через веб-сайт разработчиков Twitter, один создается автоматически при установке TwitterKit через приложение Fabric, а другой — через веб-сайт Fabric при активации TwitterKit.

У меня не сработали все варианты ConsumerKey/consumerSecrets TwitterKit, кроме той, которую я создал на веб-сайте Fabric.

Войдите на веб-сайт Fabric, найдите свое приложение, коснитесь его и на левой панели выберите «Добавить комплект». Завершите добавление комплекта, а затем вернитесь на домашнюю страницу приложения и коснитесь только что добавленного комплекта. В нем должны быть правильные ключи/секреты, которые вы должны использовать.

Кроме того, убедитесь, что вы используете тот же набор ключей в записи Plist TwitterKit и инициализации AppDelegate.

person William T.    schedule 30.05.2016
comment
Майк из Fabric здесь. Просто проясню несколько вещей: один ключ, созданный автоматически при установке через Twitter Kit, — это ваш ключ API Fabric. Тот, который создается через веб-сайт или при установке Twitter Kit в новой учетной записи Fabric, является потребительским ключом и секретом Twitter, которые определяют ваши разрешения на доступ к данным в Twitter. Надеюсь, это немного поможет! - person Mike Bonnell; 01.06.2016
comment
Привет, Уильям, у меня все еще есть эта проблема, ключи верны, и я добавил их в файл appdelegate и plist, что я могу сделать, спасибо - person Nada Gamal; 01.07.2016
comment
Привет, @NadaGamal, ты уверен, что используешь ключ с веб-сайта Fabric, а не другие ключи? Кроме того, недавнее обновление TwitterKit сломало мою установку, и она еще не заработала, так что это может быть связано. - person William T.; 06.07.2016

Мы столкнулись с тем же кодом ошибки 403 forbidden в наших приложениях для Android и iOS. Причиной является недавнее изменение API, которое требует внесения в белый список следующих схем URL-адресов для приложений на https://developer.twitter.com/en/apps/YOUR-APP-ID:

TwitterKit для Android: twittersdk://

TwitterKit для iOS: twitterkit-YOUR_CONSUMER_KEY://

Источник: https://github.com/twitter/twitter-kit-android/issues/134

Хотя ответ, скорее всего, не решает вышеупомянутую проблему в этом конкретном случае, он все же имеет отношение к описанной проблеме.

person Tim Schäfer    schedule 12.02.2019

Решение для «[TwitterKit] Ошибка при получении токена аутентификации пользователя. ошибка: Ошибка запроса: запрещено (403)'

Ниже приведено пошаговое руководство по входу в Twitter с помощью TwitterKit в Swift 4 и более поздних версиях без Fabric.

Шаг 1: У вас должен быть действующий твиттер-аккаунт. Вход в а/к. ==> Перейти к https://developer.twitter.com/en/apps/ == > Создать новое приложение ==> Дайте все подробности. Помните, что все детали необходимы, поэтому заполните их внимательно. URL-адрес обратного вызова чрезвычайно важен и имеет определенный формат, например «twitterkit-CONSUMER API KEY://» (вы получите его после создания приложения). ==> Создайте приложение. ==> Нажмите на сведения о приложении, которое вы только что создали. Вы увидите «Ключи и жетоны». Выберите это, чтобы увидеть приложение Consumer Key & Secret. Это будет необходимо в вашем проекте iOS.

Шаг 2: Откройте проект Xcode и создайте приложение с одним представлением. Дайте любое имя вашему проекту и нажмите «Далее». По умолчанию существует класс ViewController.swift. Перейдите к раскадровке этого ViewController и создайте кнопку «Войти в Twitter», или вы можете создать кнопку по коду. В действии кнопки, сделанном вами, напишите приведенный ниже код.

     // Swift
        TWTRTwitter.sharedInstance().logIn(completion: { (session, error) in
            if (session != nil) {
                print("signed in as \(session!.userName)");
            } else {
                print("error: \(error!.localizedDescription)");
            }
        })
    }

Шаг 3: Установите TwitterKit и Firebase по модулям. модуль «TwitterKit» модуль «Firebase/Core»

Шаг 4: После создания приложения и выполнения всех шагов не забудьте добавить представленный ниже XML-код в файл info.plist вашего приложения в Xcode. Для этого просто щелкните файл info.plist и выберите «Открыть как исходный код». Теперь сразу после тега вставьте в него следующий фрагмент XML:

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>twitterkit-ConsumerKey</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>twitter</string>
<string>twitterauth</string>
</array>

Теперь замените ConsumerKey своим собственным потребительским ключом (API-ключом Twitter), который вы получаете на панели инструментов приложения Twitter для своего недавно созданного приложения.

Шаг 5: Откройте файл AppDelegate.swift и добавьте следующую строку кода в его первую функцию приложения, т.е.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Twitter.sharedInstance().start(withConsumerKey:“#################”, consumerSecret:“##############################”)
return true
}

Также добавьте сюда еще одну функцию: func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any] = [:]) -> Bool { return Twitter.sharedInstance().application(app, open: url , варианты: варианты) }

Шаг 6. Перейдите к https://firebase.google.com ==> Нажмите ПЕРЕЙТИ К КОНСОЛИ ==> Добавить проект ==> Укажите название проекта ==> Примите условия и положения. ==> Создать проект ==> Проект будет создан ==> Выберите «Продолжить» ==> Выберите iOS ==> Укажите идентификатор пакета, псевдоним и нажмите кнопку «Зарегистрировать приложение» ==> Загрузите файл конфигурации и переместите GoogleService-Info .plist, который вы только что загрузили в корень вашего проекта Xcode, и добавьте его ко всем целям. ==> Далее ==> Нет необходимости устанавливать Firebase, поскольку вы уже установили его через модуль. Нажмите «Далее» ==> импортируйте Firebase в файл AppDelegate вверху и вставьте «FirebaseApp.configure()» в функцию ниже в AppDelegate.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?){
FirebaseApp.configure()
}

Шаг 7: Удалите только что созданное приложение, если вы ранее запускали его на своем устройстве, и переустановите его. ==> Подождите 2 минуты. ==> Вы получите сообщение «Поздравляем, вы успешно добавили Firebase в свое приложение». Это сообщение необходимо, что означает успех. Перейти к консоли

Шаг 8: Выберите аутентификацию ==> Выберите метод входа ==> Выберите Twitter и активируйте его с помощью ключа API и секрета. Щелкните Сохранить.

Шаг 9: Нажмите кнопку «Войти в Twitter», и вы увидите, что приложение перенаправляет на страницу авторизации.

Отлично.. Все готово.. Спасибо..

person Community    schedule 19.12.2018