gpt4 book ai didi

python - Discord API 401 未经 OAuth 授权

转载 作者:行者123 更新时间:2023-12-01 18:03:38 29 4
gpt4 key购买 nike

简单问题:我正在尝试使用 Discord API 备份服务器(或公会,如果您使用官方术语)上的所有消息。

因此,我实现了 OAuth,没有任何问题,我有访问 token ,并且可以查询一些端点(我尝试了 /users/@me/users/@me/guilds)。不过,大多数都不起作用。例如,如果我查询 /users/@me/channels (应该是 DM),我会从 API 收到 401 Unauthorized 响应。如果我从 /users/@me/guilds 收集公会 ID,然后尝试使用 /guilds/guild.id/channels 列出其中的 channel ,情况也是一样的。

真正奇怪的是,我确实拥有所需的所有范围(我认为是这样,我没有采用 RPC 范围,因为我认为它不是我想做的事情所必需的),而且我无法弄清楚我自己解决了...同样奇怪的是,在 OAuth 授权屏幕上,我有这两件事:

Read all messages

This app cannot read messages

它有点反驳自己......:(

您有什么想法想要分享吗?

谢谢!

注意:我正在使用 Python,但我认为它与这里无关,因为某些端点确实可以使用我拥有的 header 和 token ...

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

baseUrl = "https://discordapp.com/api"

def authorize():
scopes = [
"guilds",
"email",
"identify",
"messages.read",
"guilds.join",
"gdm.join",
"connections"
]
urlAuthorize = "{}/oauth2/authorize?client_id={}&scope={}&response_type=code".format(baseUrl, clientid, ('+'.join(scopes)))
pyperclip.copy(urlAuthorize)

code = input("Code: ")
return code

def getAccessToken(code):
url = "{}/oauth2/token".format(baseUrl)

params = {
"client_id" : clientid,
"client_secret" : clientsecret,
"redirect_uri" : "http://localhost",
"grant_type":"authorization_code",
"code" : code,
}

req = requests.post(url, params = params)
return json.loads(req.text)

以及与 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 服务器; https://discordapp.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopes

但是,本地 RPC 服务器处于内测阶段,您必须注册/获得接受才能使用它。

我想创建一个 DM 导出器,但现在看来不太可能。

关于python - Discord API 401 未经 OAuth 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43696694/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com