Skip to content

Instantly share code, notes, and snippets.

@yat1ma30
Last active December 22, 2015 07:18
Show Gist options
  • Save yat1ma30/6436583 to your computer and use it in GitHub Desktop.
Save yat1ma30/6436583 to your computer and use it in GitHub Desktop.
はてな OAuth Django
# -*- coding: utf-8 -*-
from django.http import HttpResponse, HttpResponseRedirect
from django.template import RequestContext, loader
import urlparse
import oauth2 as oauth
# OAuthの設定
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
SCOPE = 'read_public'
REQUEST_TOKEN_URL='https://www.hatena.com/oauth/initiate'
ACCESS_TOKEN_URL='https://www.hatena.com/oauth/token'
AUTHORIZE_URL='https://www.hatena.ne.jp/oauth/authorize'
CALLBACK_URL = ""
consumer = oauth.Consumer(CONSUMER_KEY, CONSUMER_SECRET)
def index_view(request):
template = loader.get_template('index.html')
message =""
if 'access_token' in request.session:
message = "logined"
else:
message = "not logined"
context = RequestContext(request, {
'message': message,
})
return HttpResponse(template.render(context))
"""
以下ログイン処理関数
"""
def onauth(request):
request_token = request.session['request_token']
token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
token.set_verifier(request.GET['oauth_verifier'])
client = oauth.Client(consumer, token)
resp, content = client.request(ACCESS_TOKEN_URL)
request.session['access_token'] = dict(urlparse.parse_qsl(content))
return HttpResponseRedirect('/')
def login(request):
client = oauth.Client(consumer)
resp, content = client.request("{0}?scope={1}&oauth_callback={2}".format(REQUEST_TOKEN_URL, SCOPE, CALLBACK_URL))
request.session['request_token'] = dict(urlparse.parse_qsl(content))
return HttpResponseRedirect("{0}?oauth_token={1}".format(AUTHORIZE_URL, request.session['request_token']['oauth_token']))
def logout(request):
session = request.session
if 'access_token' in session:
del session['access_token']
if 'request_token' in session:
del session['request_token']
return HttpResponseRedirect('/')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment