Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 与OAuth不一致的API 401_Python_Api_Oauth_Discord - Fatal编程技术网

Python 与OAuth不一致的API 401

Python 与OAuth不一致的API 401,python,api,oauth,discord,Python,Api,Oauth,Discord,快速提问:我正在尝试使用Discord API对服务器(或公会,如果使用官方术语)上的所有消息进行备份 所以我实现了OAuth,没有任何问题,我有我的访问令牌,我可以查询一些端点(我尝试了/users/@me,/users/@me/guilds)。不过,大多数都不起作用。例如,如果我查询/users/@me/channels(应该是DMs),我会从API获得401个未经授权的响应。如果我从/users/@me/guilds收集一个帮会id,然后尝试使用/guilds/guild.id/chann

快速提问:我正在尝试使用Discord API对服务器(或公会,如果使用官方术语)上的所有消息进行备份

所以我实现了OAuth,没有任何问题,我有我的访问令牌,我可以查询一些端点(我尝试了
/users/@me
/users/@me/guilds
)。不过,大多数都不起作用。例如,如果我查询
/users/@me/channels
(应该是DMs),我会从API获得401个未经授权的响应。如果我从
/users/@me/guilds
收集一个帮会id,然后尝试使用
/guilds/guild.id/channels
列出其中的频道,也是一样的

真正奇怪的是,我确实拥有所有需要的作用域(我想是的,我没有使用RPC,因为我不认为这是我想要做的事情所必需的),而我自己也无法理解。。。同样奇怪的是,在OAuth授权屏幕上,我有两件事:

它有点反唇相讥……:(

你有什么想法想和大家分享吗

谢谢

注意:我使用的是Python,但我不认为它与此相关,因为有些端点确实使用我拥有的头和令牌

这是我的“身份验证码”:

以及与API请求相关的代码:

def getHeaders():
    return {
        "Authorization" : "{} {}".format("Bearer", config["accessToken"]),
        # "user-agent" : "DiscordBackup/0.0.1"
    } 

def getRequest(endpoint, asJson = True, additional = None):
    url = "{}/{}".format(baseUrl, endpoint)
    req = requests.get(url, headers = getHeaders())
    print()
    print(getHeaders())
    print(url)
    print(req.text)
    if asJson:
        return json.loads(req.text)
    else:
        return req.text

def getMe(): # this works
    endpoint = "users/@me"
    return getRequest(endpoint)

def getMyDMs(): # this gives me a code 401 Unauthorized
    endpoint = "/users/@me/channels"
    return getRequest(endpoint)

我在遇到这个问题时看到了这篇文章,坦率地说,没有办法解决它

messages.read
权限用于本地RPC服务器

但是,本地RPC服务器是私有测试版,您必须注册/获得接受才能使用它


我想创建一个DM exporter,但现在看来不太可能了。

你们的机器人到底有哪一个?最好能看到一些代码,这样我们就可以知道你们是否在其他地方犯了错误。我添加了它们,还有两个请求函数,一个有效,另一个给我一个代码401。@ThomasKowalski你们有进一步的了解吗s?我有一个类似的问题:OAuth正在工作,我可以阅读
/users/@me/guilds
,但我不能阅读
/users/@me/channels
。不,我没有,我放弃了。如果你找到解决方案,请告诉我!哇,这正是我想知道的!尽管答案来得很晚,但我很高兴知道不是我的代码错了啊,我想这可能值得一提的是任何其他人偶然发现这一点,但我很高兴你仍然积极,并设法阅读:)我现在最好的办法是使用持票人代币,这显然让你访问DMs,但许多人可能不想这样做。
def getHeaders():
    return {
        "Authorization" : "{} {}".format("Bearer", config["accessToken"]),
        # "user-agent" : "DiscordBackup/0.0.1"
    } 

def getRequest(endpoint, asJson = True, additional = None):
    url = "{}/{}".format(baseUrl, endpoint)
    req = requests.get(url, headers = getHeaders())
    print()
    print(getHeaders())
    print(url)
    print(req.text)
    if asJson:
        return json.loads(req.text)
    else:
        return req.text

def getMe(): # this works
    endpoint = "users/@me"
    return getRequest(endpoint)

def getMyDMs(): # this gives me a code 401 Unauthorized
    endpoint = "/users/@me/channels"
    return getRequest(endpoint)