【问题标题】:OAuth response works as URL but can't get cURL to work in PHPOAuth 响应作为 URL 工作,但不能让 cURL 在 PHP 中工作
【发布时间】:2015-11-28 01:05:31
【问题描述】:

我正在尝试获得 OAuth 响应以使用 Slack,但没有任何乐趣。

我得到了一个从 Slack 返回的“代码”var 值,我需要将其包含在我的响应中。

我可以使用返回的值手动构建一个 URL,并将其作为响应发送,以完成 OAuth 并安装我的应用程序 - 每次都有效。它看起来像这样:

https://slack.com/api/oauth.access?client_id=12345&code=123.456.789&client_secret=12345678&

'code' var 是变量位,其他都是静态的。

我知道 PHP 正在获取我需要的“代码”的价值,因为我可以回显它。

这是不起作用的 PHP:

    <?php 

    $authCode = $_GET['code'];
    echo $authCode; //succeeds

    $client_id = '12345';
    $client_secret = '12345678';


    $data = array(
                'client_id' => $client_id,
                'client_secret' => $client_secret,
                'code' => $authCode
                    );
            $data_string = json_encode($data);


    $ch = curl_init('https://slack.com/api/oauth.access');

                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                    'Content-Type: application/json',
                    'Content-Length: ' . strlen($data_string))
                );
            //Execute CURL

            $result = curl_exec($ch);
            return $result; 


     ?>

我希望在发送响应后看到加载的新页面,但首先要做的是。

这是我第一次尝试这样的事情,所以我怀疑我错过了一个重要的部分,希望有人能帮我整理一下。

欢迎任何取得成功结果的替代方法。谢谢!

【问题讨论】:

    标签: php curl oauth slack-api


    【解决方案1】:

    这里有两点不太对劲:

    1. 您正在以 JSON 格式提供输入参数,但按照 OAuth 2.0 规范,Slack API 要求参数以 GET 或 POST 参数的形式提供,如下所述:https://api.slack.com/web#basics。所以你应该使用http_build_query($data)而不是json_encode($data),并省略自己设置任何HTTP头。

    2. 请求中缺少redirect_uri 参数

    【讨论】:

    • 感谢您的回复。是的,我在您发帖前一小时左右发现了http_build_query 方法!这就像你在这里建议的那样,所以我去睡觉了。你的答案今天很好找到,因为它解释了它为什么起作用。然后也添加了redirect_uri,但仍有一个问题需要解决。
    • 澄清:redirect_uri 的问题在于它不会重定向到另一个页面。我确实得到了一个有效的 JSON 响应,它显示出来了,它没有抱怨redirect_uri 不好,但页面没有改变。
    猜你喜欢
    • 2012-07-28
    • 2014-09-02
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多