簡體   English   中英

OAuth響應可用作URL,但無法使cURL在PHP中起作用

[英]OAuth response works as URL but can't get cURL to work in PHP

我正在嘗試獲取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; 


     ?>

我希望看到發送響應后加載的新頁面,但首先要注意的是。

這是我第一次嘗試類似的事情,所以我懷疑我錯過了重要的一點,希望有人可以幫我分類。

任何取得成功結果的替代方法都受到歡迎。 謝謝!

這里有兩件事不太正確:

  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參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM