Example #1
0
    def get(self,provider):
        print provider 
        client = None
        if provider == config.OPENID_DOUBAN:
            client = Douban()
        elif provider == config.OPENID_SINA:
            client = SinaWeibo()

        if not client:
            log.warning(u'不合法的路径连接')
            raise tornado.web.HTTPError(400,u"不支持该第三方账户登录")

        try:
            login_uri = client.login()
        except OAuthError,e:
            log.warning(e)
            raise tornado.web.HTTPError(400,u"跳转到第三方失败,请重新尝试一下")
Example #2
0
    def get(self,provider):
        
        code = self.get_argument("code")

        client = None
        user = None

        openid_type = config.OPENID_TYPE_DICT.get(provider)

        if not openid_type:
            raise tornado.web.HTTPError(404,"not support such provider")

        if provider in [config.OPENID_DOUBAN,config.OPENID_SINA,]:
            if provider == config.OPENID_DOUBAN:
                client = Douban()
            elif provider == config.OPENID_SINA:
                client = SinaWeibo()

            ## oauth2方式授权处理
            try:
                token_dict = client.get_access_token(code)
                log.info(token_dict)
                #print "---token_dict:",token_dict
            except OAuthError,e:
                log.warning(e)
                raise tornado.web.HTTPError(400,u"从第三方获取access_token失败了,请重新尝试一下。")

            if not (token_dict and token_dict.get("access_token")):
                raise tornado.web.HTTPError(400,"no_access_token")

            try:
                access_token = token_dict.get("access_token","")
                refresh_token = token_dict.get("refresh_token","")


                uid = token_dict.get("uid") or token_dict.get("user", {}).get("uid") \
                    or token_dict.get("user", {}).get("id")
                client.set_token(access_token, refresh_token)
                user_info = client.get_user_info(uid)
                log.info(user_info)
                log.info(user_info.data)
            except OAuthError, e:
                log.warning(e)
                raise tornado.web.HTTPError(400, e.msg)