2014年3月23日 星期日

用 Python 進行 xAuth


昨天去參加 PIXNET 第一次舉辦的 Hackathon ,來紀錄一下心得。
這次我們挑戰 app 開發,之前都寫寫 web 或 extension,想說應該要有所不同。
「果然碰壁。」


由於開發時間只有 4 小時,又沒偷跑很多...
想當然爾就是做的不是很好,不過也學習到不少東西,還有認識一些高手。

今天就是要講一下 xAuth 這個認證方法,這是為了讓行動裝置等 mobile 系統比較好使用,而衍生出的 oAuth 變形,但就本質上他還是 oAuth ,只是相較的簡化。

我們後端是使用 python 來作開發,最熟悉的東西果然最好!
不過其實, xAuth 的最後一步,會因對象不同而寫法不同,像對 PIXNET 就不同於對 twitter,但還是分享一下哈哈。

Gist link: https://gist.github.com/ken8203/9724878

import json, urlparse
import oauth2 as oauth
from urllib import urlencode

consumer_key = 'consumer_key_here'
consumer_secret = 'consumer_secret_here'

access_token_url = 'https://emma.pixnet.cc/oauth/access_token'

consumer = oauth.Consumer(consumer_key, consumer_secret)
client = oauth.Client(consumer)
client.authorizations

params = {}
params["x_auth_username"] = username
params["x_auth_password"] = password
params["x_auth_mode"] = 'client_auth'

client.set_signature_method = oauth.SignatureMethod_HMAC_SHA1()
resp, token = client.request(access_token_url, method="POST",body=urllib.urlencode(params))
access_token = dict(urlparse.parse_qsl(token))

print access_token

url = 'https://emma.pixnet.cc/oauth2/grant?grant_type=refresh_token&refresh_token=' + access_token['oauth_token'] + '&client_id=83e81e1ab0bebe20774f5b39af9a6db4&client_secret=25f9c36fbba5f88933a999d3bccfccb1'
page = urllib2.urlopen(url).read()
print json.loads(page)['access_token']

沒有留言:

張貼留言