Discord Oauth2 中的 Curl 问题

Posted

技术标签:

【中文标题】Discord Oauth2 中的 Curl 问题【英文标题】:Problems with Curl in Discord Oauth2 【发布时间】:2019-05-14 11:51:15 【问题描述】:

问题很简单。

当 oAuth2 代码发送到页面时。这个接收令牌 json 的 php 脚本不起作用。请帮帮我:c

$base64 = base64_encode($data['id'] . ':' . $data['secret']);

$info = curl_init();
curl_setopt_array($info, array(
    CURLOPT_URL => "https://discordapp.com/api/oauth2/token?grant_type=authorization_code&code=" . $data['code'] . "&redirect_uri=" . urlencode($data['redirect']),
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_HTTPHEADER => array(
        "Authorization: Basic " . $base64,                                                                                
        'Content-Length: ' . strlen($base64)
    ),
    CURLOPT_RETURNTRANSFER => true
));

$tinyresult = curl_exec($info);
curl_close($info);

return $tinyresult;

【问题讨论】:

如何它“不起作用”?你得到什么回应? $tinyresult 的值是多少? 结果什么都没有。响应只等待几秒钟来接收一个空页面 var_dump($tinyresult) 的输出是什么?这是在函数中吗,因为我注意到您正在使用 return 并且不要对响应执行任何操作,否则在 sn-p 中。 这是一个函数。 var_dump($tinyresult) 返回值 false curl_error 告诉你什么? 【参考方案1】:

问题解决了:D

    $info = curl_init();

    curl_setopt_array($info, array(
        CURLOPT_URL => "https://discordapp.com/api/oauth2/token",
        CURLOPT_POST => 1,
        CURLOPT_POSTFIELDS => array(
            "grant_type" => "authorization_code",
            "client_id" => $data['id'],
            "client_secret" => $data['secret'],
            "redirect_uri" => $data['redirect'],
            "code" => $data["code"],
        ),
        CURLOPT_RETURNTRANSFER => true,
    ));

    $tinyresult = curl_exec($info);
    if ($tinyresult == false) 
        $tinyerror = curl_error($info);
     else 
        $tinyerror = null;
        $tinyresult = json_decode($tinyresult);
    

    $httpcode = curl_getinfo($info, CURLINFO_HTTP_CODE);

    curl_close($info);

    return array(
        "data" => $tinyresult,
        "err" => $tinyerror,
        "state" => $httpcode,
    );

【讨论】:

以上是关于Discord Oauth2 中的 Curl 问题的主要内容,如果未能解决你的问题,请参考以下文章

如何撤销 Discord OAuth2.0 中的令牌?

Discord 使用 url-query 中的“代码”发送 Oauth2 重定向 url。如何在我的谷歌脚本中获取该代码

无法在 Electron 应用程序中使用 Discord OAuth2

Discord API - 传回生成的 OAuth2 代码的随机“无效代码”错误

使用 oauth2 从 Discord API 获取信息

如何安全地存储 Discord(OAuth2) 用户的访问令牌?