[PYTHON] Skript zur Automatisierung der OAuth-Anmeldung für Twitter

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()

Beispiel

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

Skript zur Automatisierung der OAuth-Anmeldung für Twitter
Twitter OAuth mit Django
Versuchen Sie, Pre-Connect R zu automatisieren
Versuchen Sie, Twitter-Trends zu analysieren
Mit Python auf Twitter posten
Ich habe versucht, alles zu automatisieren, einschließlich der zweistufigen Authentifizierung von Google OAuth