ゼロと無限の間に

フリーでオープンソースなJavaScriptとかPHPとか。

ユーザ用ツール

サイト用ツール


python-box:appengine-oauth

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
python-box:appengine-oauth [2010/11/02 01:27]
dgbadmin @norikae_mapの使用例に車・歩きを追加
python-box:appengine-oauth [2017/05/13 05:54] (現在)
dgbadmin [その4. TwitterにOAuthでログインしてTwitter APIを使うデモ]
行 44: 行 44:
  
 === 使用例 3. 歩きでのルートの案内 === === 使用例 3. 歩きでのルートの案内 ===
-<code>@norikae_map 八里郷領港大道 福州平潭県 歩き</code> +<code>@norikae_map 霞が関 霞が関 歩き</code> 
-試しにつぶやくには、Twitterにログイン後に[[http://twitter.com/?status=%40norikae_map%20%E5%85%AB%E9%87%8C%E9%83%B7%E9%A0%98%E6%B8%AF%E5%A4%A7%E9%81%93%20%E7%A6%8F%E5%B7%9E%E5%B9%B3%E6%BD%AD%E7%9C%8C%20%E6%AD%A9%E3%81%8D|ここをクリック]]+試しにつぶやくには、Twitterにログイン後に[[http://twitter.com/?status=%40norikae_map%20%E9%9C%9E%E3%81%8C%E9%96%A2%20%E9%9C%9E%E3%81%8C%E9%96%A2%20%E6%AD%A9%E3%81%8D|ここをクリック]]
  
  
行 63: 行 63:
 ''' '''
  
 +import json
 import logging import logging
-import wsgiref.handlers+import webapp2
 from appengine_twitter import AppEngineTwitter from appengine_twitter import AppEngineTwitter
 from basehandler import BaseHandler, h from basehandler import BaseHandler, h
-from django.utils import simplejson 
 from google.appengine.ext import db from google.appengine.ext import db
-from google.appengine.ext import webapp 
  
  
行 135: 行 134:
     # ここまで来ればOAuthを使ってAPIが使える。試しにユーザー名を取得     # ここまで来ればOAuthを使ってAPIが使える。試しにユーザー名を取得
     twitter.verify()     twitter.verify()
-    name = simplejson.loads(twitter.last_response.content)['screen_name']+    name = json.loads(twitter.last_response.content)['screen_name']
  
     self.demo_header()     self.demo_header()
行 176: 行 175:
 routing = [('/oauth/', InitHandler), routing = [('/oauth/', InitHandler),
            ('/oauth/callback', CallbackHandler)]            ('/oauth/callback', CallbackHandler)]
-application = webapp.WSGIApplication(routing, debug=False+application = webapp2.WSGIApplication(routing, debug=False)
-wsgiref.handlers.CGIHandler().run(application)+
 </code> </code>
  
行 196: 行 194:
  
 __author__ = 'dgbadmin@gmail.com' __author__ = 'dgbadmin@gmail.com'
-__version__ = '0.1.0'+__version__ = '0.1.1'
  
  
行 205: 行 203:
 from random import getrandbits from random import getrandbits
 from time import time from time import time
- +
  
 class AppEngineOAuth(object): class AppEngineOAuth(object):
行 220: 行 218:
     else:     else:
       self._token_type = 'access'       self._token_type = 'access'
- +
  
   def prepare_login(self, req_token_url):   def prepare_login(self, req_token_url):
行 243: 行 241:
     dic['params'] = urllib.urlencode(self.get_oauth_params(req_token_url,     dic['params'] = urllib.urlencode(self.get_oauth_params(req_token_url,
                                                            sig_params))                                                            sig_params))
-    +
     return dic     return dic
  
行 251: 行 249:
     self._token_secret = req_token_secret     self._token_secret = req_token_secret
     self._token_type = 'request'     self._token_type = 'request'
-    +
     params = urllib.urlencode(self.get_oauth_params(acs_token_url, {}))     params = urllib.urlencode(self.get_oauth_params(acs_token_url, {}))
     res = urlfetch.fetch(url=acs_token_url, payload=params, method='POST')     res = urlfetch.fetch(url=acs_token_url, payload=params, method='POST')
行 274: 行 272:
     if self._token_type != None:     if self._token_type != None:
       oauth_params['oauth_token'] = self._token       oauth_params['oauth_token'] = self._token
-      +
     # Add other params     # Add other params
     params.update(oauth_params)     params.update(oauth_params)
-    +
     # Sort and concat     # Sort and concat
     s = ''     s = ''
行 283: 行 281:
       s += self._quote(k) + '=' + self._quote(params[k]) + '&'       s += self._quote(k) + '=' + self._quote(params[k]) + '&'
     msg = method + '&' + self._quote(url) + '&' + self._quote(s[:-1])     msg = method + '&' + self._quote(url) + '&' + self._quote(s[:-1])
-    +
     # Maybe token_secret is empty     # Maybe token_secret is empty
     key = self._secret + '&' + self._token_secret     key = self._secret + '&' + self._token_secret
-    +
     digest = hmac.new(key, msg, sha1).digest()     digest = hmac.new(key, msg, sha1).digest()
     params['oauth_signature'] = digest.encode('base64')[:-1]     params['oauth_signature'] = digest.encode('base64')[:-1]
行 298: 行 296:
  
   def _qs2dict(self, s):   def _qs2dict(self, s):
-    dic = {}  +    dic = {}
     for param in s.split('&'):     for param in s.split('&'):
       (key, value) = param.split('=')       (key, value) = param.split('=')
python-box/appengine-oauth.1288628825.txt.gz · 最終更新: 2010/11/02 01:27 by dgbadmin