当前位置: 首页>>代码示例>>Python>>正文


Python AstakosClient.get_token方法代码示例

本文整理汇总了Python中astakosclient.AstakosClient.get_token方法的典型用法代码示例。如果您正苦于以下问题:Python AstakosClient.get_token方法的具体用法?Python AstakosClient.get_token怎么用?Python AstakosClient.get_token使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在astakosclient.AstakosClient的用法示例。


在下文中一共展示了AstakosClient.get_token方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: wrapper

# 需要导入模块: from astakosclient import AstakosClient [as 别名]
# 或者: from astakosclient.AstakosClient import get_token [as 别名]
        def wrapper(request, *args, **kwargs):
            if request.method not in ['GET', 'HEAD']:
                return HttpResponseNotAllowed(['GET', 'HEAD'])

            try:
                access_token = request.GET.get('access_token')
                requested_resource = request.path.split(VIEW_PREFIX, 2)[-1]
                requested_resource = smart_str(requested_resource,
                                               encoding="utf-8")
                astakos = AstakosClient(SERVICE_TOKEN, ASTAKOS_AUTH_URL,
                                        retry=2, use_pool=True,
                                        logger=logger)
                if access_token is not None:
                    # authenticate using the short-term access token
                    try:
                        request.user = astakos.validate_token(
                            access_token, requested_resource)
                    except AstakosClientException:
                        return HttpResponseRedirect(request.path)
                    request.user_uniq = request.user["access"]["user"]["id"]

                    _func = api_method(token_required=False,
                                       user_required=False)(func)
                    response = _func(request, *args, **kwargs)
                    if response.status_code == 404:
                        raise Http404
                    elif response.status_code == 403:
                        raise PermissionDenied
                    return response

                client_id, client_secret = OAUTH2_CLIENT_CREDENTIALS
                # TODO: check if client credentials are not set
                authorization_code = request.GET.get('code')
                redirect_uri = unquote(request.build_absolute_uri(
                    request.get_full_path()))
                if authorization_code is None:
                    # request authorization code
                    params = {'response_type': 'code',
                              'client_id': client_id,
                              'redirect_uri': redirect_uri,
                              'state': '',  # TODO include state for security
                              'scope': requested_resource}
                    return HttpResponseRedirect('%s?%s' %
                                                (join_urls(astakos.oauth2_url,
                                                           'auth'),
                                                 urlencode(params)))
                else:
                    # request short-term access token
                    parts = list(urlsplit(redirect_uri))
                    params = dict(parse_qsl(parts[3], keep_blank_values=True))
                    if 'code' in params:  # always True
                        del params['code']
                    if 'state' in params:
                        del params['state']
                    parts[3] = urlencode(params)
                    redirect_uri = urlunsplit(parts)
                    data = astakos.get_token('authorization_code',
                                             *OAUTH2_CLIENT_CREDENTIALS,
                                             redirect_uri=redirect_uri,
                                             scope=requested_resource,
                                             code=authorization_code)
                    params['access_token'] = data.get('access_token', '')
                    parts[3] = urlencode(params)
                    redirect_uri = urlunsplit(parts)
                    return HttpResponseRedirect(redirect_uri)
            except AstakosClientException as err:
                logger.exception(err)
                raise PermissionDenied
开发者ID:AthinaB,项目名称:synnefo,代码行数:70,代码来源:util.py

示例2: wrapper

# 需要导入模块: from astakosclient import AstakosClient [as 别名]
# 或者: from astakosclient.AstakosClient import get_token [as 别名]
        def wrapper(request, *args, **kwargs):
            if request.method not in ["GET", "HEAD"]:
                return HttpResponseNotAllowed(["GET", "HEAD"])

            try:
                access_token = request.GET.get("access_token")
                requested_resource = text.uenc(request.path.split(VIEW_PREFIX, 2)[-1])
                astakos = AstakosClient(SERVICE_TOKEN, ASTAKOS_AUTH_URL, retry=2, use_pool=True, logger=logger)
                if access_token is not None:
                    # authenticate using the short-term access token
                    try:
                        request.user = astakos.validate_token(access_token, requested_resource)
                    except AstakosClientException:
                        return HttpResponseRedirect(request.path)
                    request.user_uniq = request.user["access"]["user"]["id"]

                    _func = api_method(token_required=False, user_required=False)(func)
                    response = _func(request, *args, **kwargs)
                    if response.status_code == 404:
                        raise Http404
                    elif response.status_code == 403:
                        raise PermissionDenied
                    return response

                client_id, client_secret = OAUTH2_CLIENT_CREDENTIALS
                # TODO: check if client credentials are not set
                authorization_code = request.GET.get("code")
                redirect_uri = unquote(request.build_absolute_uri(request.get_full_path()))
                if authorization_code is None:
                    # request authorization code
                    params = {
                        "response_type": "code",
                        "client_id": client_id,
                        "redirect_uri": redirect_uri,
                        "state": "",  # TODO include state for security
                        "scope": requested_resource,
                    }
                    return HttpResponseRedirect("%s?%s" % (join_urls(astakos.oauth2_url, "auth"), urlencode(params)))
                else:
                    # request short-term access token
                    parts = list(urlsplit(redirect_uri))
                    params = dict(parse_qsl(parts[3], keep_blank_values=True))
                    if "code" in params:  # always True
                        del params["code"]
                    if "state" in params:
                        del params["state"]
                    parts[3] = urlencode(params)
                    redirect_uri = urlunsplit(parts)
                    data = astakos.get_token(
                        "authorization_code",
                        *OAUTH2_CLIENT_CREDENTIALS,
                        redirect_uri=redirect_uri,
                        scope=requested_resource,
                        code=authorization_code
                    )
                    params["access_token"] = data.get("access_token", "")
                    parts[3] = urlencode(params)
                    redirect_uri = urlunsplit(parts)
                    return HttpResponseRedirect(redirect_uri)
            except AstakosClientException, err:
                logger.exception(err)
                raise PermissionDenied
开发者ID:parisk,项目名称:synnefo,代码行数:64,代码来源:util.py


注:本文中的astakosclient.AstakosClient.get_token方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。