Tweepy - Ошибка при получении токена доступа: «аргумент 2 для map () должен поддерживать итерацию» - PullRequest
1 голос
/ 30 марта 2012

Я использую tweepy (библиотека Python для API Twitter) для создания приложения для Twitter. Ниже приведен код представления django, где я создаю OAuthHandler с ключом потребителя, секретным и получаю токен запроса, сохраняю его в django.messages и перенаправляю его на URL авторизации.

Позже, во время просмотра обратного вызова, я получаю токен запроса и создаю OAUthHandler, но я получаю эту ошибку ниже на 'auth.get_access_token (v)'

TweepError at /twitter/return/

argument 2 to map() must support iteration

Traceback :
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
111.                         response = callback(request, *callback_args, **callback_kwargs)

File "/home/nzee/Downloads/uday/homepage/../homepage/users/views.py" in tw_return
80.   auth.get_access_token(v)


File "/usr/local/lib/python2.6/dist-packages/tweepy-1.9-py2.6.egg/tweepy/auth.py" in get_access_token
126.             raise TweepError(e)

Exception Type: TweepError at /twitter/return/ Exception Value:
argument 2 to map() must support iteration

Views.py код ниже

def tw_return(request):
  v = request.GET.get('oauth_verifier')

  key = settings.TWITTER_KEY
  secret = settings.TWITTER_SECRET
  auth = tweepy.OAuthHandler(key, secret)

  mess = get_messages(request)

  a=[]
  for m in mess:
    a.append(m)

  auth.set_request_token(a[0],a[1])

  auth.get_access_token(v)

  api = tweepy.API(auth)
  api.update_status('tweepy + oauth1!')
  return HttpResponseRedirect('/')      

def twitter(request):
  key = settings.TWITTER_KEY
  secret = settings.TWITTER_SECRET
  auth = tweepy.OAuthHandler(key, secret)
  try:
    redirect_url = auth.get_authorization_url()
  except tweepy.TweepError:
    raise Http404

  messages.add_message(request, messages.INFO, auth.request_token.key)
  messages.add_message(request, messages.INFO, auth.request_token.secret)
  return HttpResponseRedirect(redirect_url)

1 Ответ

1 голос
/ 30 марта 2012

неправильно : Я подозреваю, что вы не получаете oauth_verifier, поэтому его значение равно None (т. Е. Не повторяется)

этот вопрос может помочь: Tweepy Твиттер аутентификации oauth не возвращается oauth_verifier

Вот пример обработчика appEngine, который использует tweepy, может быть, это поможет?

https://github.com/sclm/tweepy-examples/blob/master/appengine/oauth_example/handlers.py

Окончательный ответ:

Я думаю, что вы не получаете правильный токен запроса от get_messages () ... ошибка, которую вы получаете, происходит, если вы вызываете auth.set_request_token() с None.Нашел это в выпусках на github для tweepy https://github.com/tweepy/tweepy/issues/25

# WRONG CODE
auth.set_request_token(None, None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...