Dies ist mein erster Beitrag. Ich weiß nicht, wie ich Qiita verwenden soll.
Ich hatte die Möglichkeit, einen Test für das OAuth-Login von Twitter zu schreiben, ohne einen Browser zu verwenden. Daher werde ich nur die Teile herausnehmen, die verallgemeinert werden können, und sie belassen. Ich denke jedoch, weil es ein Problem ist, dass ich nicht feststellen kann, ob es sich um einen Fehler der Twitter-API oder um einen Fehler der zu testenden Funktion handelt.
twitteroauth.py
# -*- coding: utf-8 -*-
import mechanize
import cookielib
class TwitterWebOAuth(object):
"""Twitter Web OAuth"""
def __init__(self, username, password, is_cookie=False):
self._is_cookie = is_cookie
self._username = username
self._password = password
def oauth(self, oauth_url, callback_proc):
"""OAuth with twitter account"""
br = self._browser()
br.open(oauth_url)
self._login_with_twitter(br)
url = br.geturl()
return callback_proc(url, br)
def patch(self, proc):
"""patch script using Browser"""
self._browser()
return proc()
def _browser(self):
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
if self._is_cookie:
cj = cookielib.CookieJar()
br.set_cookiejar(cj)
return br
def _login_with_twitter(self, br):
url = br.geturl()
br.open(url)
br.select_form(nr=0)
br.form['session[username_or_email]'] = self._username
br.form['session[password]'] = self._password
br.submit()
Melden Sie sich bei Qiita an und öffnen Sie Ihren eigenen Einstellungsbildschirm. Vergessen Sie nicht "pip install mechanize".
test.py
# -*- coding: utf-8 -*-
from twitteroauth import TwitterWebOAuth
def callback(url, br):
br.open('https://qiita.com/settings/profile')
url = br.geturl()
print url
#Ich dachte, ich würde etwas auf dem Einstellungsbildschirm tun, aber es wird chaotisch
if __name__ == '__main__':
to = TwitterWebOAuth('naoiwata', 'xxxxxx', True)
to.oauth(
'https://qiita.com/auth/twitter',
callback
)
Wenn ich die Datei ausführe, wird "https: // qiita.com / settings / profile" ausgegeben, sodass ich mich anscheinend angemeldet und meinen Profileinstellungsbildschirm geöffnet habe.
Recommended Posts