【问题标题】:access the values ​of this result, obtained from an api访问此结果的值,从 api 获得
【发布时间】:2021-04-01 23:26:32
【问题描述】:

GOOD,我有一个问题,我正在开发一个使用 api 并返回令牌的应用程序,但是显然令牌过期了,我想知道一些方法来获取 access-toke 的值,事实是我不知道这个结果是一个 json 还是一个字典,disuclpar 我是新手,这是编程,问题是我无法访问该值以将其存储在变量中,因为当令牌过期时,我必须提高再次粘贴所有内容并粘贴新生成的令牌,所有这些都是使用请求库和 django 后端开发的

class Token(object):
    def __init__(self, url, payload):
        self.url = url

        self.payload = payload
        headers = {
            'Content-Type': 'application/x-www-form-urlencoded'
        }

        self.response = requests.request("POST", self.url, headers=headers, data=self.payload)

        if self.response.status_code == 200:
            print('Success!')
        elif self.response.status_code == 404:
            print('Not Found.')

        a = self.response.text
        print (a)


    def consulter_padron(self):
        url = "I delete this, they kick me out of work hahaha"


        payload={} 
        headers = {
            'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjVMcDByZ0xrNmJYS3RHZURzSmhMeS1xakFobyIsImtpZCI6IjVMcDByZ0xrNmJYS3RHZURzSmhMeS1xakFobyJ9.eyJjbGllbnRfaWQiOiJJbnRlcnB1YmxpY2EiLCJzY29wZSI6IkludGVycHVibGljYSIsInN1YiI6IjkzNDkyZmU2LWU1NTEtNDMwNy04ODdkLTQwODIxYmZhZmE2ZSIsImFtciI6WyJwYXNzd29yZCJdLCJhdXRoX3RpbWUiOjE2MTcyNzQyNTcsImlkcCI6Imlkc3J2IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiQ29ycmFsZXMiLCJlbWFpbCI6Im5vbWFpbEBub21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOiJ0cnVlIiwicGhvbmVfbnVtYmVyIjoiNDQ0NDQ0NDQ0IiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjoidHJ1ZSIsIlVzdWFyaW8iOiI1MyIsIlNlcnZpZG9yIjoiMyIsIkRvbWluaW8iOiIyNyIsIkVudGlkYWQiOiI1MyIsInJvbGUiOlsiRG9tYWluIiwiSW50ZXJwdWJsaWNhIiwiUGFkcm9uIl0sImp0aSI6IjE5YTFlM2UzMWI3NDg5ZGM1ZjA2NTJhNjJlYTAzMGMyIiwiaXNzIjoiaHR0cHM6Ly9wcmUtaW50ZXJwdWJsaWNhYXV0aG9yaXphdGlvbi5pbnRlcnB1YmxpY2EuZXMvaWRlbnRpdHkiLCJhdWQiOiJodHRwczovL3ByZS1pbnRlcnB1YmxpY2FhdXRob3JpemF0aW9uLmludGVycHVibGljYS5lcy9pZGVudGl0eS9yZXNvdXJjZXMiLCJleHAiOjE2MTcyNzc4NTgsIm5iZiI6MTYxNzI3NDI1OH0.CbYFfMNHfaqjmtdDx6Bb3sfrzMBbWmi9p1-4xsYLQxOmigupwZqnHHopy5Ltu3mwWftNwvPj0Lx1bH5m1kI0wG0Y_zWqQ3N7UacZDtApfaoNpwOjygPWcZsHj83V2xdYKSPGBFjaDng_9TECBz4ANOlmbh7c0pklLu-nA_Od9E_wa2znq8CGv4sxIC4ViTeoEclMAq--sP2j1FNxZiFinq7dG32QV7zzR_1JJjVjtzK4eAT4CViZFhedsswn9OEn6wctJtmnDkRBnQioHSvz2wM5J-tngVS6tn_o1PUwVtykBc_0_TTfowiJkAkEmSQJKobAQPIgVvPrH4JsNeahGw'
        }

        self.response = requests.request("GET", url, headers=headers, data=payload)

        print (self.response.text)


        

prueba01 = Token('I delete this, they kick me out of work hahaha')
prueba01.consulter_padron()

【问题讨论】:

  • 有问题可能是好事,但是大多数人将它与坏事联系起来,所以?无论如何。你如何获得令牌?你从某个地方复制它吗?

标签: python django api request token


【解决方案1】:

以下是使用 pyjwt 模块检查令牌是否过期的方法,例如:

import jwt
import time

key = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjVMcDByZ0xrNmJYS3RHZURzSmhMeS1xakFobyIsImtpZCI6IjVMcDByZ0xrNmJYS3RHZURzSmhMeS1xakFobyJ9.eyJjbGllbnRfaWQiOiJJbnRlcnB1YmxpY2EiLCJzY29wZSI6IkludGVycHVibGljYSIsInN1YiI6IjkzNDkyZmU2LWU1NTEtNDMwNy04ODdkLTQwODIxYmZhZmE2ZSIsImFtciI6WyJwYXNzd29yZCJdLCJhdXRoX3RpbWUiOjE2MTcyNzQyNTcsImlkcCI6Imlkc3J2IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiQ29ycmFsZXMiLCJlbWFpbCI6Im5vbWFpbEBub21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOiJ0cnVlIiwicGhvbmVfbnVtYmVyIjoiNDQ0NDQ0NDQ0IiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjoidHJ1ZSIsIlVzdWFyaW8iOiI1MyIsIlNlcnZpZG9yIjoiMyIsIkRvbWluaW8iOiIyNyIsIkVudGlkYWQiOiI1MyIsInJvbGUiOlsiRG9tYWluIiwiSW50ZXJwdWJsaWNhIiwiUGFkcm9uIl0sImp0aSI6IjE5YTFlM2UzMWI3NDg5ZGM1ZjA2NTJhNjJlYTAzMGMyIiwiaXNzIjoiaHR0cHM6Ly9wcmUtaW50ZXJwdWJsaWNhYXV0aG9yaXphdGlvbi5pbnRlcnB1YmxpY2EuZXMvaWRlbnRpdHkiLCJhdWQiOiJodHRwczovL3ByZS1pbnRlcnB1YmxpY2FhdXRob3JpemF0aW9uLmludGVycHVibGljYS5lcy9pZGVudGl0eS9yZXNvdXJjZXMiLCJleHAiOjE2MTcyNzc4NTgsIm5iZiI6MTYxNzI3NDI1OH0.CbYFfMNHfaqjmtdDx6Bb3sfrzMBbWmi9p1-4xsYLQxOmigupwZqnHHopy5Ltu3mwWftNwvPj0Lx1bH5m1kI0wG0Y_zWqQ3N7UacZDtApfaoNpwOjygPWcZsHj83V2xdYKSPGBFjaDng_9TECBz4ANOlmbh7c0pklLu-nA_Od9E_wa2znq8CGv4sxIC4ViTeoEclMAq--sP2j1FNxZiFinq7dG32QV7zzR_1JJjVjtzK4eAT4CViZFhedsswn9OEn6wctJtmnDkRBnQioHSvz2wM5J-tngVS6tn_o1PUwVtykBc_0_TTfowiJkAkEmSQJKobAQPIgVvPrH4JsNeahGw'
decoded = jwt.decode(key, options={"verify_signature": False})
exp_timestamp = decoded['exp']

print(f'expires: {time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime(exp_timestamp))}')
print(f'expired: {exp_timestamp < time.time()}')
expires: Thu, 01 Apr 2021 11:50:58
expired: True

不确定它是否能回答你的问题:)

【讨论】:

  • 事情就像将令牌放在变量中并将其传递到标头中,这是我做不到的
  • 如果 a 是代码中标记的变量 - 您可以使用 f-string 在标头中传递它,例如:a = self.response.text; headers = {'Authorization': f'Bearer {a}'} 同样,如果这不是问题 - 请告诉我:)
  • 谢谢,问题是我已经用“”传递了token,我解决了,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 2011-09-21
  • 2021-07-14
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多