まず用意するのは、
TwitterのOauthサイトに飛ぶための機能
TwitterのOauthからCallbackされるところ
が必要です。
これがつぶやくための情報が取得できたことになるので
これではじめてつぶやけます。
まずTwitterのAPIを利用するための登録をTwitterに行います。
http://www.msng.info/archives/2010/01/twitter_api_oauth_with_php.php
がとても参考になります。
そしてGoogle App EngineからTwitterのAPIを利用するには、
AppEngine-OAuth-Library
が大変便利です。
使い方は、
http://blog.mudaimemo.com/2010/02/google-app-engine-twitter-oauth.html
が大変参考になります。
ざっくり使うならば以下のような感じになります。
# -*- coding: utf_8 -*- import os import sys import logging from google.appengine.ext.webapp import template from google.appengine.ext import webapp from google.appengine.api import urlfetch from django.utils import simplejson as json import traceback import urllib #AppEngine-OAuth-Libraryを読み込みます。 import oauth import wsgiref.handlers #登録した値を使います CONSUMER_KEY = 'アプリのConsumer key' CONSUMER_SECRET = 'アプリのConsumer secret' class Top(webapp.RequestHandler): def get(self): template_values = {} path = os.path.join(os.path.dirname(__file__), 'top.html') self.response.out.write(template.render(path, template_values)) class TwitSignin(webapp.RequestHandler): def get(self): callback_url = '%s/twitter/callback' % (request.host_url) client = oauth.TwitterClient(CONSUMER_KEY, CONSUMER_SECRET,callback_url) self.redirect(client.get_authorization_url()) class TwitCallback(webapp.RequestHandler): def get(self): #つぶやくために必要なのは以下の二つではありません token = request.get('oauth_token') verifier = request.get('oauth_verifier') client = oauth.TwitterClient(CONSUMER_KEY, CONSUMER_SECRET,None) #以下の部分で肝心な情報を取得します user_info = client.get_user_info(token, verifier) #この下で取得する2つの情報がつぶやくために必要になります oauth_token = user_info['token'] oauth_secret = user_info['secret'] #重要な情報がとれたところでついでにつぶやきサンプルです。 msg = "oauthテスト なう" additional_params = {'status': msg} try: response = client.make_request('http://twitter.com/statuses/update.json', token=oauth_token, secret=oauth_secret, additional_params=additional_params, protected=True, method='POST') data = json.loads(response.content) if data.has_key('error'): logging.error(data['error']) except Exception, e: logging.error(traceback.format_exc()) self.redirect("/") def main(): application = webapp.WSGIApplication([ ('/', Top), ('/twitter/signin', TwitSignin), ('/twitter/callback', TwitCallback), ], debug=True) wsgiref.handlers.CGIHandler().run(application) if __name__ == "__main__": main()
ちなみにtop.htmlは
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>test</title> </head> <body> <a href="/twitter/signin">auth twitter</a> </body> </html>
0 件のコメント:
コメントを投稿