def login(self, args): """ live Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info('login from Live') code = args.get('code') access_token = self.get_token(code) user_info = self.get_user_info(access_token) name = user_info["name"] email = user_info["emails"]["account"] email_list = [{ 'name': name, 'email': email, 'verified': 1, 'primary': 1 }] return user_manager.oauth_db_login(user_info["id"], provider=LOGIN_PROVIDER.LIVE, name=name, nickname=name, access_token=access_token, email_list=email_list, avatar_url=None)
def login(self, args): """ QQ Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info("login from QQ") code = args.get('code') access_token = self.get_token(code) info = self.get_info(access_token) user_info = self.get_user_info(access_token, info["openid"], info["client_id"]) avatar_url = "" if "figureurl_qq_1" in user_info: # try qq logo first avatar_url = user_info["figureurl_qq_1"] elif "figureurl" in user_info: # try qzone logo avatar_url = user_info["figureurl"] return user_manager.oauth_db_login(info["openid"], name=user_info["nickname"], provider=LOGIN_PROVIDER.QQ, nickname=user_info["nickname"], access_token=access_token, email_list=[], avatar_url=avatar_url)
def login(self, args): """ weibo Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info("login from Weibo Sina") code = args.get("code") access_token = self.get_token(code) user_info = self.get_user_info(access_token["access_token"], access_token["uid"]) #Get email need to apply high-level interface #email = self.get_email(access_token["access_token"], access_token["uid"]) name = user_info["name"] email_list = [{'name': name, 'email': '', 'verified': 1, 'primary': 1}] return user_manager.oauth_db_login(user_info["id"], provider=LOGIN_PROVIDER.WEIBO, name=name, nickname=user_info["screen_name"], access_token=access_token, email_list=email_list, avatar_url=user_info["avatar_hd"])
def login(self, args): """ github Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info('login from GitHub') code = args.get('code') access_token = self.get_token(code) user_info = self.get_user_info(access_token) email_list = self.get_emails(access_token) name = user_info["login"] nickname = user_info["name"] if "name" in user_info else name return user_manager.oauth_db_login(str(user_info["id"]), provider=LOGIN_PROVIDER.GITHUB, name=user_info["login"], nickname=nickname, access_token=access_token, email_list=email_list, avatar_url=user_info["avatar_url"])
def login(self, args): """ live Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info('login from Live') code = args.get('code') access_token = self.get_token(code) user_info = self.get_user_info(access_token) name = user_info["name"] email = user_info["emails"]["account"] email_list = [ { 'name': name, 'email': email, 'verified': 1, 'primary': 1 } ] return user_manager.oauth_db_login(user_info["id"], provider=LOGIN_PROVIDER.LIVE, name=name, nickname=name, access_token=access_token, email_list=email_list, avatar_url=None)
def login(self, args): """ weibo Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info("login from Weibo Sina") code = args.get("code") access_token = self.get_token(code) user_info = self.get_user_info(access_token["access_token"], access_token["uid"]) # Get email need to apply high-level interface # email = self.get_email(access_token["access_token"], access_token["uid"]) name = user_info["name"] email_list = [ { 'name': name, 'email': '', 'verified': 1, 'primary': 1 } ] return user_manager.oauth_db_login(user_info["id"], provider=LOGIN_PROVIDER.WEIBO, name=name, nickname=user_info["screen_name"], access_token=access_token["access_token"], email_list=email_list, avatar_url=user_info["avatar_hd"])
def login(self, args): """ github Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info('login from GitHub') code = args.get('code') access_token = self.get_token(code) user_info = self.get_user_info(access_token) email_list = self.get_emails(access_token) name = user_info["login"] nickname = name if "name" in user_info: nickname = user_info["name"] if not nickname: nickname = name return user_manager.oauth_db_login(str(user_info["id"]), provider=LOGIN_PROVIDER.GITHUB, name=user_info["login"], nickname=nickname, access_token=access_token, email_list=email_list, avatar_url=user_info["avatar_url"])
def login(self, args): code = args.get('code') if not code: return None log.info('login from alauda, code = ' + code) # basic auth header, content_type and post data client_id = get_config("login.alauda.client_id") client_secret = get_config("login.alauda.client_secret") basic_auth = HTTPBasicAuth(client_id, client_secret) headers = {'Content-type': 'application/x-www-form-urlencoded'} data = { 'grant_type': 'authorization_code', 'code': code, 'redirect_uri': get_config('login.alauda.redirect_uri'), 'client_id': client_id } # Post request url = get_config('login.alauda.access_token_url') r = requests.post(url, data=data, headers=headers, auth=basic_auth) resp = r.json() # {u'username': u'junbowang', u'realname': u'junbowang', u'success': True, # u'access_token': u'3MyZLF8RVo5X8lDLZQSj5s4OpIGQGn', u'token_type': u'Bearer', # u'logo_file': u'/static/images/user/default-logo.png', u'email': u'*****@*****.**'} if not resp.get("success"): log.debug("get access token failed from alauda: %r" % resp) return None # username will used as openid too since its unique. And also it's the 'namespace' for user's alauda resource username = resp["username"] email = resp["email"] email_list = [ { 'name': username, 'email': email, 'verified': 1, 'primary': 1 } ] user_with_token = user_manager.oauth_db_login(username, provider=LOGIN_PROVIDER.ALAUDA, name=username, nickname=resp.get("realname", username), access_token=resp["access_token"], email_list=email_list, avatar_url=resp.get("logo_file")) # for oxford only self.oxford(user_with_token["user"], resp.get("oxford_api")) return user_with_token
def login(self, args): """ gitcafe Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info('login from Gitcafe') code = args.get('code') if not code: return None access_token = self.get_token(code) user_info = self.get_user_info("Bearer " + access_token) name = user_info['username'] email = user_info['email'] nickname = user_info['fullname'] if nickname is None: nickname = name if user_info['avatar_url'].startswith('https'): avatar_url = user_info['avatar_url'] else: avatar_url = "https" + user_info['avatar_url'][4:] email_list = [ { 'name': name, 'email': email, 'verified': 1, 'primary': 1 } ] return user_manager.oauth_db_login(user_info['id'], provider=LOGIN_PROVIDER.GITCAFE, name=name, nickname=nickname, access_token=access_token, email_list=email_list, avatar_url=avatar_url)
def login(self, args): """ gitcafe Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info('login from Gitcafe') code = args.get('code') access_token = self.get_token(code) user_info = self.get_user_info("Bearer " + access_token) name = user_info['username'] email = user_info['email'] nickname = user_info['fullname'] if nickname is None: nickname = name if user_info['avatar_url'].startswith('https'): avatar_url = user_info['avatar_url'] else: avatar_url = "https" + user_info['avatar_url'][4:] email_list = [{ 'name': name, 'email': email, 'verified': 1, 'primary': 1 }] return user_manager.oauth_db_login(user_info['id'], provider=LOGIN_PROVIDER.GITCAFE, name=name, nickname=nickname, access_token=access_token, email_list=email_list, avatar_url=avatar_url)
def login(self, args): """ QQ Login :type args: dict :param args: :rtype: dict :return: token and instance of user """ log.info("login from QQ") code = args.get('code') access_token = self.get_token(code) info = self.get_info(access_token) user_info = self.get_user_info(access_token, info["openid"], info["client_id"]) return user_manager.oauth_db_login(info["openid"], name=user_info["nickname"], provider=LOGIN_PROVIDER.QQ, nickname=user_info["nickname"], access_token=access_token, email_list=[], avatar_url=user_info["figureurl"])