def complete_login(self, request, app, token): params = { 'api_id': str(app.key), 'format': 'json', 'sid': token.token, 'method': 'getProfiles', 'uids': '2630606', 'v': '2.0', 'timestamp': str(time.time()), 'random': str(int(random.random()*10000000)), } p = ''.join(( ''.join((k+'='+params[k] for k in sorted(params))), app.secret )) params['sig'] = md5(p).hexdigest() resp = requests.get(self.profile_url, params) extra_data = resp.json['response'][0] uid = str(extra_data['uid']) user = User(last_name=extra_data.get('last_name', ''), first_name=extra_data.get('first_name', '')) account = SocialAccount(extra_data=extra_data, uid=uid, provider=self.provider_id, user=user) return SocialLogin(account)
def complete_login(self, request, app, token): resp = requests.get(self.profile_url, { 'access_token': token.token, 'alt': 'json' }) extra_data = resp.json # extra_data is something of the form: # # {u'family_name': u'Penners', u'name': u'Raymond Penners', # u'picture': u'https://lh5.googleusercontent.com/-GOFYGBVOdBQ/AAAAAAAAAAI/AAAAAAAAAGM/WzRfPkv4xbo/photo.jpg', # u'locale': u'nl', u'gender': u'male', # u'email': u'*****@*****.**', # u'link': u'https://plus.google.com/108204268033311374519', # u'given_name': u'Raymond', u'id': u'108204268033311374519', # u'verified_email': True} # # TODO: We could use verified_email to bypass allauth email verification uid = str(extra_data['id']) user = User(email=extra_data.get('email', ''), last_name=extra_data['family_name'], first_name=extra_data['given_name']) account = SocialAccount(extra_data=extra_data, uid=uid, provider=self.provider_id, user=user) return SocialLogin(account)
def complete_login(self, request, app, token): resp = requests.get(self.profile_url, { 'access_token': token.token, 'alt': 'json' }) extra_data = resp.json # extra_data is something of the form: # # {u'family_name': u'Penners', u'name': u'Raymond Penners', # u'picture': u'https://lh5.googleusercontent.com/-GOFYGBVOdBQ/AAAAAAAAAAI/AAAAAAAAAGM/WzRfPkv4xbo/photo.jpg', # u'locale': u'nl', u'gender': u'male', # u'email': u'*****@*****.**', # u'link': u'https://plus.google.com/108204268033311374519', # u'given_name': u'Raymond', u'id': u'108204268033311374519', # u'verified_email': True} # # TODO: We could use verified_email to bypass allauth email verification uid = str(extra_data['id']) user = User(email=extra_data.get('email', ''), last_name=extra_data.get('family_name', ''), first_name=extra_data.get('given_name', '')) account = SocialAccount(extra_data=extra_data, uid=uid, provider=self.provider_id, user=user) return SocialLogin(account)
def complete_login(self, request, app, token): resp = requests.get(self.profile_url, params={"access_token": token.token}) extra_data = resp.json uid = str(extra_data["id"]) user = User( username=extra_data.get("username", ""), email=extra_data.get("email", ""), first_name=extra_data.get("first_name", ""), last_name=extra_data.get("last_name", ""), ) account = SocialAccount(user=user, uid=uid, extra_data=extra_data, provider=self.provider_id) return SocialLogin(account)
def complete_login(self, request, app, token): resp = requests.get(self.profile_url, params={ 'access_token': token.token }) extra_data = resp.json uid = str(extra_data['id']) user = User(username=extra_data.get('login', ''), email=extra_data.get('email', ''), first_name=extra_data.get('name', '')) account = SocialAccount(user=user, uid=uid, extra_data=extra_data, provider=self.provider_id) return SocialLogin(account)
def complete_login(self, request, app, token): resp = requests.get(self.profile_url, params={'access_token': token.token}) extra_data = resp.json uid = str(extra_data['id']) user = User(username=extra_data.get('login', ''), email=extra_data.get('email', ''), first_name=extra_data.get('name', '')) account = SocialAccount(user=user, uid=uid, extra_data=extra_data, provider=self.provider_id) return SocialLogin(account)
def complete_login(self, request, app, token): resp = requests.get(self.profile_url, params={ 'access_token': token.token }) extra_data = resp.json extra_data = extra_data['data'] uid = str(extra_data['id']) name_parts = extra_data['full_name'].split(' ', 1) if len(name_parts) == 2: first_name, last_name = name_parts else: first_name, last_name = name_parts[0], '' user_kwargs = {'first_name': first_name, 'last_name': last_name} user = User(username=extra_data['username'], **user_kwargs) account = SocialAccount(user=user, uid=uid, extra_data=extra_data, provider=self.provider_id) return SocialLogin(account)
def fb_complete_login(app, token): resp = requests.get('https://graph.facebook.com/me', params={ 'access_token': token.token }) extra_data = resp.json email = valid_email_or_none(extra_data.get('email')) uid = extra_data['id'] user = User(email=email) # some facebook accounts don't have this data for k in ['username', 'first_name', 'last_name']: v = extra_data.get(k) if v: setattr(user, k, v) account = SocialAccount(uid=uid, provider=FacebookProvider.id, extra_data=extra_data, user=user) return SocialLogin(account)
def request_url(self, url, args={}, callback=None): account = self.account app = SocialApp.objects.get_current(self.account.get_provider().id) tokens = SocialToken.objects.filter(app=app, account=account).order_by('-id') if tokens: token = tokens[0] args.update({ 'access_token': token.token, }) url = '%s%s' % (self.BASE_URL, url) response = requests.get(url, args) if callback: callback(url, response.content) return response.json return None
def fb_complete_login(app, token): resp = requests.get('https://graph.facebook.com/me', params={'access_token': token.token}) extra_data = resp.json email = valid_email_or_none(extra_data.get('email')) uid = extra_data['id'] user = User(email=email) # some facebook accounts don't have this data for k in ['username', 'first_name', 'last_name']: v = extra_data.get(k) if v: setattr(user, k, v) account = SocialAccount(uid=uid, provider=FacebookProvider.id, extra_data=extra_data, user=user) return SocialLogin(account)
def request_url(self, url, args, callback=None): account = self.account app = SocialApp.objects.get_current(self.account.get_provider().id) tokens = SocialToken.objects.filter(app=app, account=account).order_by('-id') if tokens: token = tokens[0] args.update({ 'client_id': app.key, 'client_secret': app.secret, 'access_token': token.token, }) response = requests.get(url, args) if callback: callback(url, response.content) return response.json return None
def complete_login(self, request, app, token): resp = requests.get(self.profile_url, params={ 'oauth_token': token.token }) extra_data = resp.json uid = str(extra_data['id']) name_parts = extra_data.get('full_name', '').split(' ', 1) if len(name_parts) == 2: first_name, last_name = name_parts else: first_name, last_name = name_parts[0], '' user_kwargs = {'first_name': first_name, 'last_name': last_name} user = User(username=extra_data.get('username', ''), email=extra_data.get('email', ''), **user_kwargs) account = SocialAccount(user=user, uid=uid, extra_data=extra_data, provider=self.provider_id) return SocialLogin(account)
def has_valid_authentication(self, retry=True): account = self.account app = SocialApp.objects.get_current(self.account.get_provider().id) tokens = SocialToken.objects.filter(app=app, account=account).order_by('-id') if tokens: token = tokens[0] response = requests.get('https://www.googleapis.com/oauth2/v2/userinfo', { 'client_id': app.key, 'client_secret': app.secret, 'access_token': token.token, }) if 'error' in response.json or 'errors' in response.json: if retry: self.refresh_token() return self.has_valid_authentication(False) else: return False else: return True return False
def complete_login(self, request, app, token): resp = requests.get(self.profile_url, params={ 'access_token': token.token, 'key': StackExchangeProvider.key, 'site': StackExchangeProvider.site }) print resp.json extra_data = resp.json['items'][0] uid = str(extra_data['user_id']) name_parts = extra_data.get('display_name', '').split(' ', 1) if len(name_parts) == 2: first_name, last_name = name_parts else: first_name, last_name = name_parts[0], '' user_kwargs = {'first_name': first_name, 'last_name': last_name} user = User(username='', email='', **user_kwargs) account = SocialAccount(user=user, uid=uid, extra_data=extra_data, provider=self.provider_id) return SocialLogin(account)