Подтвердить что ты не робот

API Twitter - причины "недействительного или истекшего токена"

Каковы возможные причины, по которым токен может истек (помимо того, что пользователь не авторизует приложение)?

Моя проблема заключается в том, что у меня есть приложение с несколькими тысячами пользователей, все коммуникации API работают отлично, но для некоторых пользователей я получаю ошибку invalid or expired token, мой первоначальный, хотя это было то, что они являются пользователями, которые отменили аутентификацию в приложении но я связался с некоторыми из них, и они не отменили доступ.

Любые идеи о том, какие другие проблемы могут вызвать эту ошибку?

4b9b3361

Ответ 1

Проверяйте целостность токена доступа в любое время, вызывая GET account/verify_credentials при использовании этого токена доступа.

Его упоминалось и в результате исследований я узнал, что:

Ваш токен доступа будет недействительным, если пользователь явно отклонит ваш приложения из их настроек или если администратор Twitter приостанавливает выражение. Если ваша заявка приостановлена, на на вашей странице приложения, в которой говорится, что она была приостановлена.

Почему мой токен доступа к твиттеру недействителен/истек?

Отметьте этот пост: недействительные/просроченные токены доступа.

В группах google есть одно сообщение, в котором говорится:

У вас нет второго шанса, и это по дизайну. Запросы OAuth имеют уникальную подпись; после подачи конкретного запроса оно не могут быть представлены повторно. Если они правильно вводят штырь, все хорошо, вы получаете токен доступа. Если они ошибаются, вы получаете 401 Unauthorized - это ожидается. Но если они затем попытаются снова войти в контакт, даже правильный вывод отображается как несанкционированный.

Отметьте эту ссылку для приведенной выше ссылки.

Некоторые предложения сотрудника twitter по той же проблеме:

Думаю, есть две вещи, которые я хотел бы предложить на этом этапе: 1.) Перейти к ваши настройки приложения и используйте вкладку "Reset" на вкладке resetключ потребителя и секрет, затем обновите эти значения в приложении и убедитесь, что вы по-прежнему видите одно и то же поведение. 2.) Попробуйте пройти oauth_callback в вашем запросе request_token. Честно говоря, я не думаю, что это будет иметь значение, но я хочу попытаться быть настолько строгим, насколько я могу здесь.

Также проверьте этот discussion, говорящий:

Вам нужно использовать oauth_token и oauth_token_secret, которые были возвращены из вызов oauth/access_token вместо одного в настройках вашего приложения в dev.twitter.com

Ответ 2

В дополнение к комментариям, сделанным другими пользователями, иногда twitter api возвращает ошибку "недопустимый токен", когда токен не является проблемой. Я заметил это больше всего, когда я построил строку запроса, которая не анализируется правильно. Например, как только я получал эту ошибку, когда я проходил в screen_name, у которого были символы, которые не кодировались URI. Я также получил это, когда я прошел в пустых значениях, подобных этому (где курсор пуст):

https://api.twitter.com/1/followers.json?cursor=&screen_name=whatevah

Не могли бы вы дать нам особенности вызовов, которые возвращают эту ошибку?

Ответ 3

Возможно, эти пользователи не отменили доступ. Но по моему опыту токен доступа также может быть истек после того, как пользователь (в тестовых случаях: меня) изменил свой пароль.

Когда пользователь делает это, вы больше не можете использовать API-интерфейс REST API потока в этой области пользователя. Примените приложение, чтобы справиться с этой ситуацией. Отмените сеанс пользователя, поэтому, когда он вернется к вашему приложению, его снова можно перенаправить в Twitter, чтобы начать новый токен доступа к OAuth. Или отправьте ему электронное письмо, чтобы попросить его снова подключиться. Vimeo/Windows/... некоторые из тех, кто обрабатывает истекли токены с помощью электронной почты.

Удачи!

Ответ 4

Возможно, это будет полезно для вас. Я столкнулся с той же проблемой.

Пожалуйста, найдите ниже фрагмент кода

$code = $tmhOAuth->user_request(array(
      'method' => 'POST',
     'url' => $tmhOAuth->url('oauth/access_token', ''),
     'params' => array(
            'oauth_verifier' => trim($params['oauth_verifier']),
        )
      ));

   if ($code == 200) {
        $oauth_creds = $tmhOAuth->extract_params($tmhOAuth->response['response']); 
        // echo '<pre>';print_r($oauth_creds);exit;


      $tmhOAuth->reconfigure(array_merge($tmhOAuth->config, array(
         'token'  => $oauth_creds['oauth_token'],
            'secret' => $oauth_creds['oauth_token_secret'],
     )));

  $code = $tmhOAuth->user_request(array(
          'url' => $tmhOAuth->url('1.1/account/verify_credentials') 
   ));


}

Ответ 5

Вы подтвердили, что токены работали одновременно? В системе OAuth, над которой я работал, произошла ошибка в том, как маркеры были надежно сохранены и извлечены, что привело к повреждению небольшого процента. Если вы можете подтвердить, что токены работали в прошлом, это хороший первый шаг.

Когда вы извлекаете токены из хранилища, они не изменяются? Возможно ли, чтобы они были повреждены тем, как вы управляете ими?

Поместите несколько протоколов, чтобы отслеживать, когда токены работают и не работают. Значит ли токен снова работать после того, как он однажды провалился? Если вы не используете токен в течение 30 дней, истекает ли он? С подробным журналом вы можете начать идентификацию истекших токенов и искать используемые шаблоны, чтобы указать на то, что может привести к их истечению.

Обязательно изучите и другие возможности. Как пользователи отменяют токены в Twitter? Легко ли это случайно? Для пользователей с неудачными токенами у них есть и другие авторизованные приложения, которые также перестали работать?

Ответ 6

Прежде всего, хороший вопрос Ран.

Я хочу спросить вас, что вы прошли через разработчиков Twitter?

Иногда становится двусмысленным то, что токен использовать, поскольку Twitter предоставляет две пары токенов и библиотеку. Один из них - секретный ключ.

Вам нужно выбрать те токен, который начинается с вашего идентификатора Twitter, а затем дефиса.

Теперь ваш вопрос заключается в том, что эта ошибка возникает с некоторыми из ваших пользователей. Итак, вот ответ, который сам приложение находит двусмысленным, чтобы выбрать токен.

Хотя я, возможно, не совсем прав, но я рекомендую вам попробовать это решение хотя бы один раз.

Ответ 7

Мой Бог ответ, но я поделюсь моим ответом из другого вопроса, объясняющим, как это может быть ваши компьютерные часы:

Если ваш поток OAuth работал один день и не прошел следующий, проверьте ваш компьютер часы. Я запускал боксерскую коробку, которая каким-то образом установила свое время на день раньше, что заставило API Twitter вернуть { "код": 89, "сообщение": "Недопустимый или истекший токен".}. Это может также отображаться как отметка времени 401. Вы можете использовать эту команду для обновления своих часов в Ubuntu:

sudo ntpdate time.nist.gov

Альтернативный метод, если ntpdate недоступен в вашей системе:

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

Ответ 8

Я получал ту же ошибку, после чего я изменил (access_token) to (access_token_key), и это сработало для меня.

Я надеюсь, что это поможет кому-то.

Ответ 9

если ваш токен доступа = 738629462149844993-FcWHjfcucCLGEosyGGQ38qI ****** iC, не забудьте указать дефис (-), за которым следует ваш USERID.