Dropbox 檔案說要進行身份驗證,您必須執行以下操作:
curl https://api.dropbox.com/oauth2/token \
-d code=<AUTHORIZATION_CODE> \
-d grant_type=authorization_code \
-d redirect_uri=<REDIRECT_URI> \
-u <APP_KEY>:<APP_SECRET>
這是我對 PHP 的嘗試,但 Dropbox 回傳以下錯誤無效請求 - 請求引數與任何受支持的授權流程都不匹配
$url = "https://api.dropbox.com/oauth2/token";
$redirect_uri = 'https://www.mywebsite.com/oauth_dropbox';
$postfields = array(
'code' => $_GET['code'],
'grant_type' => 'authorization_code',
'redirect_uri' => $redirect_uri
);
$auth = "$app_key:$app_secret";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postfields));
curl_setopt($curl, CURLOPT_USERPWD, $auth);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$json_response = curl_exec($curl);
$responseObj = json_decode($json_response);
我該如何解決?
uj5u.com熱心網友回復:
如果您明確設定基本授權,它看起來像這樣有效,也就是說,而不是:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
設定這個:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
uj5u.com熱心網友回復:
您當前的 curl 發送 GET 請求(這就是外部 API 看不到發送的任何引數的原因),但是您正在添加內容,因為它是 POST 請求。也加CURLOPT_POST。
$url = "https://api.dropbox.com/oauth2/token";
$redirect_uri = 'https://www.mywebsite.com/oauth_dropbox';
$postfields = [
'code' => $_GET['code'],
'grant_type' => 'authorization_code',
'redirect_uri' => $redirect_uri
];
$auth = "$app_key:$app_secret";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postfields));
curl_setopt($curl, CURLOPT_USERPWD, $auth);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$json_response = curl_exec($curl);
$responseObj = json_decode($json_response);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/459352.html
上一篇:如何成功呼叫此端點?
