@savva3

Как убрать открывание в браузере?

Есть небольшой скрипт
import urllib2
import urllib
import simplejson
import webbrowser

REQUEST_TOKEN_URL = 'https://getpocket.com/v3/oauth/request'
AUTHORIZE_REQUEST_URL = "https://getpocket.com/auth/authorize"
AUTHORIZE_REQUEST_TOKEN = 'https://getpocket.com/v3/oauth/authorize'

REDIRECT_URI = 'http://goo.gl/kGuI6g'
consumer_key = 'dsdddsdsd'

def get_access_token(consumer_key, redirect_uri = REDIRECT_URI):
    parameters = {
            'consumer_key' : consumer_key,
            'redirect_uri' : redirect_uri }
    headers = { 'X-Accept': 'application/json' }

    request = urllib2.Request(REQUEST_TOKEN_URL, urllib.urlencode(parameters), headers)

    try:
        resp = urllib2.urlopen(request)
    except Exception, e:
        print 'Invalid response from Pocket requesting request_token: %s' % e
        return


    request_token = simplejson.loads(resp.read())['code']

    print ''
    print 'I will try to start a browser so you can authorize the request token'
    print ''

    parameters = {
            'request_token' : request_token,
            'redirect_uri' : redirect_uri }

    webbrowser.open(AUTHORIZE_REQUEST_URL + '?' + urllib.urlencode(parameters))
    go_ahead = 'y'

    if not go_ahead: return

    parameters = {
            'consumer_key' : consumer_key,
            'code' : request_token }

    request = urllib2.Request(AUTHORIZE_REQUEST_TOKEN, urllib.urlencode(parameters), headers)
    resp = urllib2.urlopen(request)

    access_token = simplejson.loads(resp.read())

    print 'Your Pocket Access Token: %s' %  access_token['access_token']
    return access_token['access_token']

token = get_access_token(consumer_key)

Мне нужно убрать открывание в браузере, т.е вот этот фрагмент
parameters = {
            'request_token' : request_token,
            'redirect_uri' : redirect_uri }

    webbrowser.open(AUTHORIZE_REQUEST_URL + '?' + urllib.urlencode(parameters))

Но если это сделать то вылетает ошибка:
I will try to start a browser so you can authorize the request token

Traceback (most recent call last):
  File "pocket.py", line 55, in <module>
    token = get_access_token(consumer_key)
  File "pocket.py", line 48, in get_access_token
    resp = urllib2.urlopen(request)
  File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 435, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 548, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 473, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden

Что делать?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
если в OAUTH, браузер не избежать

грамотные либы умеют работать с headless browser

смотри пример, приспосабливай

или другой метод аутентификации юзай
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы