我的代码有问题,我得到的错误是:
警告:fopen(https://discordapp.com/api/v6/auth/login):无法打开流:HTTP请求失败! HTTP / 1.1 400 BAD REQUEST in 第15行的C:\ xampp \ htdocs \ s2.php
以下是相关代码:
<?php
$data = array("email" => 'Email@gmail.com', "password" => 'Password');
$data_string = json_encode($data);
$context_options = array (
'https' => array (
'method' => 'POST',
'header'=> "Content-type: application/json\r\n"
. "Content-Length: " . strlen($data_string). "\r\n",
'content' => $data_string
)
);
$context = stream_context_create($context_options);
$fp = fopen('https://discordapp.com/api/v6/auth/login', 'r', false, $context);
?>
感谢您的帮助!
答案 0 :(得分:1)
似乎不再允许通过机器人直接登录,因为您应该使用Discord的OAuth2(how does OAuth2 work?)功能。这意味着您需要在Discord帐户中设置机器人,然后您可以在机器人上使用基于令牌的访问来对抗Discord的外部应用程序。 更改为不再允许基于bot的登录发生在2017年初左右,此时所有基于PHP的Discord相关Github应用程序都停止维护。 Here是关于通过自动登录禁止机器人的讨论和评论,并且this one关于必须使用OAuth2。
在the Discord OAuth2 chapter中了解有关身份验证和漫游器的详情。
如果您可以详细说明您打算实现的目标,也许我们可以帮助您找到解决方案。
以前(不再有效)回答:
我没有使用DiscordApp,所以我还没有尝试过。您是否尝试将值作为FORM值发布到API?
,而不是发送JSON编码的数据$postData = array(
'email' => 'Email@gmail.com',
'password' => 'Password'
);
$params = array('https' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postData
)
);
$context = stream_context_create($params);
// get the entire response ...
$result = file_get_contents('https://discordapp.com/api/v6/auth/login', false, $context);
// ... or alternatively using fopen()
$fp = fopen('https://discordapp.com/api/v6/auth/login', 'r', false, $context);
我没有找到任何关于如何将参数传递给login
URI的文档,但至少可以使用基于表单的正常登录方式。
根据DiscordApp Response codes,如果不理解呼叫(调用不存在的函数)或参数发送不正确,则可能会收到400,因此您应该了解如何调用{{1}使用脚本与参数接口。