Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2014 04:30:43

enep
Зарегистрирован: 2014-10-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Desktop python CURL OAuth2

Я занимаюсь написанием desktop-приложения для работы с фотографиями с использованием языка программирование python.

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

Заранее спасибо !!!!

Офлайн

#2 Окт. 24, 2014 08:05:33

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Desktop python CURL OAuth2

enep
Что за сайт?

Офлайн

#3 Окт. 24, 2014 17:40:31

enep
Зарегистрирован: 2014-10-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Desktop python CURL OAuth2

noob_saibot
vk.com

Офлайн

#4 Окт. 25, 2014 02:05:13

enep
Зарегистрирован: 2014-10-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Desktop python CURL OAuth2

решил использовать 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 - если меня я правильно понял то это ошибка авторизации

Офлайн

#5 Окт. 25, 2014 02:12:16

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Desktop python CURL OAuth2

для vk есть готовые библиотеки
смотрите vk
а вот для авторизации vk_auth
пример получения фото используя vk_auth fetch_photos



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Окт. 25, 2014 02:34:33)

Офлайн

#6 Окт. 26, 2014 18:13:08

enep
Зарегистрирован: 2014-10-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Desktop python CURL OAuth2

Вот что у меня получилось, все работает

#!/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 запросы долго идут. Может вы мне подскажите всем проблема? заранее спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version