向 Discord 发出 php OAuth 请求

Posted

技术标签:

【中文标题】向 Discord 发出 php OAuth 请求【英文标题】:Making a php OAuth request to Discord 【发布时间】:2017-09-20 08:58:02 【问题描述】:

苦苦挣扎了一阵子。试图从 discord 中获取我的令牌。

请告诉我哪里出错了。

<?php
ini_set('display_errors',1);

$code = '';
$code = $_GET['code'];

if(isset($code))

$postData = array(
    'code' => $code,
    'client_id' => "[omitted]",
    'client_secret' => '[omitted]',
    'redirect_uri' => '[omitted]'
);

// Create the context for the request
$context = stream_context_create(array(
    'http' => array(
        // http://www.php.net/manual/en/context.http.php
        'method' => 'POST',
        'content' => $postData,
                'header' => "Authorization: Bot [omitted]\r\n".
        "Content-Length: ".strlen($postData)."\r\n",
    )
));

// Send the request
$response = file_get_contents('https://discordapp.com/api/oauth2/authorize', FALSE, $context);

echo $response;

 else 
    echo '<a href="https://discordapp.com/oauth2/authorize?response_type=code&redirect_uri=[omitted]&scope=identify%20guilds&client_id=[omitted]">Login</a>';

我不断收到错误

警告:file_get_contents(https://discordapp.com/api/oauth2/authorize):打开流失败:HTTP 请求失败! HTTP/1.1 411 长度要求在 /index.php 第 27 行

【问题讨论】:

【参考方案1】:

strlen 是否有可能在数组上失败?我见过其他人使用类似的东西

$postData = http_build_query(array('foo'=>'bar'))

将数组转换为可以在查询中使用的东西。

【讨论】:

以上是关于向 Discord 发出 php OAuth 请求的主要内容,如果未能解决你的问题,请参考以下文章

Discord Oauth2 PHP 中的 JPEG 头像

使用 Angular 向 facebook oauth 发出 CORS 问题

Discord OAuth2:'请求中缺少“代码”'

Discord OAuth 在请求中返回缺少的“代码”

向 Google Play Android Developer API 发出 HTTP 发布请求

如何使用 PHP 向网页发出请求?