[英]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;
?>
我希望看到發送響應后加載的新頁面,但首先要注意的是。
這是我第一次嘗試類似的事情,所以我懷疑我錯過了重要的一點,希望有人可以幫我分類。
任何取得成功結果的替代方法都受到歡迎。 謝謝!
這里有兩件事不太正確:
您正在以JSON格式提供輸入參數,但是按照OAuth 2.0規范,Slack API要求將這些參數作為GET或POST參數提供,如此處所述: https : //api.slack.com/web#basics 。 因此,您應該使用http_build_query($data)
而不是json_encode($data)
,並省略自己設置任何HTTP標頭的操作。
請求中缺少redirect_uri
參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.