LoginSignup
9
8

More than 5 years have passed since last update.

Twitter の OAuth ログインを自動化するスクリプト

Last updated at Posted at 2014-01-16

初投稿です. Qiita の使い方よくわからないです.

Twitter の OAuth ログインをブラウザを使わずテストを書く機会があったので汎用化できるところだけ取り出して残しておきます.
ただ Twitter API のエラーなのかテスト対象の機能のエラーなのか判別できないのが問題なので考え中です.

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

Qiita にログインして自分の設定画面を開いてみましょう.
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
    # 設定画面でなんかしようとおもったけどめんどくなってきた


if __name__ == '__main__':
    to = TwitterWebOAuth('naoiwata', 'xxxxxx', True)
    to.oauth(
        'https://qiita.com/auth/twitter',
        callback
    )

ファイルを実行すると https://qiita.com/settings/profile と出力されるので, ログインして自分のプロフィール設定画面が開いたようです.

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8