Найти - Пользователи
Полная версия: Desktop python CURL OAuth2
Начало » Центр помощи » Desktop python CURL OAuth2
1
enep
Я занимаюсь написанием desktop-приложения для работы с фотографиями с использованием языка программирование python.

Вопрос: для авторизации на сайте хочу использовать библиотеку pycUrl как мне это реализовать и что бы не надо было вызывать окно авторизации а использовать свое UI для авторизации.

Заранее спасибо !!!!
noob_saibot
enep
Что за сайт?
enep
noob_saibot
vk.com
enep
решил использовать urllib2 используя прямую авторизацию
вот сам г*внокод:
import urllib2
import urllib
hostname   = 'https://oauth.vk.com/token'
app_id     = '------------'
app_secret = '------------'
user_login = '------------'
user_pwd   = '------------'
user_scope = 'friends,status,messages'
vkapi_version = '5.25'
#Login in vk.com
auth = urllib.urlencode({'grant_type':'password','client_id':app_id,'client_secret':app_secret,'username':user_login,
                'password':user_pwd,'scope':user_scope,'v':vkapi_version})
request = urllib2.Request(hostname,data=auth)
respons = urllib2.urlopen(request);)
request = urllib2.Request(hostname,data=auth)
respons = urllib2.urlopen(request);
print respons.read()


вот что он выводит:

Traceback (most recent call last):
File “/home/enep/Experiments/python/vkapi/v1/vkapitest1.py”, line 22, in <module>
respons = urllib2.urlopen(request);
File “/usr/lib/python2.7/urllib2.py”, line 126, in urlopen
return _opener.open(url, data, timeout)
File “/usr/lib/python2.7/urllib2.py”, line 406, in open
response = meth(req, response)
File “/usr/lib/python2.7/urllib2.py”, line 519, in http_response
'http', request, response, code, msg, hdrs)
File “/usr/lib/python2.7/urllib2.py”, line 444, in error
return self._call_chain(*args)
File “/usr/lib/python2.7/urllib2.py”, line 378, in _call_chain
result = func(*args)
File “/usr/lib/python2.7/urllib2.py”, line 527, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 401: Unauthorized

HTTP Error 401: Unauthorized - если меня я правильно понял то это ошибка авторизации
terabayt
для vk есть готовые библиотеки
смотрите vk
а вот для авторизации vk_auth
пример получения фото используя vk_auth fetch_photos
enep
Вот что у меня получилось, все работает

#!/usr/bin/python
#-*- coding: utf-8 -*-s
from lxml.html import fromstring, tostring
import urllib2
import urllib
import re
import cookielib
hostname   = 'https://oauth.vk.com/token'
app_id     = '-----------------------------------'
app_secret = '--------------------------------'
user_login = '---------------------------------'
user_pwd   = '--------------------------------------------'
user_scope = '----------------------------------------'
vkapi_version = '5.25'
cookie = cookielib.CookieJar()
#Login in vk.com
request = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie),urllib2.HTTPRedirectHandler())
request.addheaders = [('User-agent', 'Mozilla/6.0')]
#https://login.vk.com/?act=login&email=&pass=
login_param2 ='act=login&email=%s&pass=%s' % (user_login,user_pwd)
respons = request.open('https://login.vk.com/',login_param2)
#https://oauth.vk.com/authorize?client_id=&scope=&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.25&response_type=token
if  urlparse.urlparse(respons.geturl()).path == '/login':
    print "NNOO LLOOGGIINN"
    import sys
    sys.exit()
auth_param = 'client_id=%s&scope=%s&response_type=token&redirect_url=%s&v=5.25&client_secret=%s&display=popup' %(app_id,user_scope,'https://oauth.vk.com/blank.html',app_secret)
resp = request.open('https://oauth.vk.com/authorize',auth_param)
_url  =  resp.geturl()
# Отправляем запрос на разрешение доступа
if _url  == 'https://oauth.vk.com/authorize':
    action = fromstring(_html).xpath('.//form[@action]')[0].get('action')
    resp = request.open(action)
    _url  =  resp.geturl()
    _html =  resp.read()
reg = 'access_token=(.*?)&'
rg = re.compile(reg,re.IGNORECASE|re.DOTALL)
m = rg.search(_url)
token = m.group(1)
print "Yooo:",token
Единственное urllib2 запросы долго идут. Может вы мне подскажите всем проблема? заранее спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB