2015-05-24 32 views
25

讓我的承載令牌從API終點,並設置如下:正確的方式來設置承載令牌,捲曲

$authorization = "Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274" 

接下來,我想使用curl訪問安全端點但是我不確定如何或者在哪裏設置持票人令牌。

我都試過,但,但它不工作:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization)); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$post); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    return json_decode($result); 

編輯:

根據該文件,我應該使用承載令牌這樣:https://apigility.org/documentation/auth/authentication-oauth2

GET /oauth/resource HTTP/1.1 
Accept: application/json 
Authorization: Bearer 907c762e069589c2cd2a229cdae7b8778caa9f07 
+0

這是PHP?服務器如何期望這個令牌被髮送?標題? –

+0

嗨 - 是的,這是PHP,通常不記名標記被設置爲標題。 – HappyCoder

+0

標題的名稱是什麼? –

回答

34

替換:

$authorization = "Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274" 

有:

$authorization = "Authorization: Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274"; 

,使之成爲有效和工作Authorization頭。

+0

嗨 - 這是我嘗試過的,但是有同樣的問題。我懷疑這個問題可能與Apigility更新有關,因爲我無法讓它在郵遞員上工作。 – HappyCoder

+0

通過將ApiGility回滾到以前的穩定版本來解決此問題。感謝您的意見,雖然不是我的解決方案,但對於其他類似問題的解決方案,它確實讓我走上正軌。謝謝您的意見! – HappyCoder

0

如果您正在使用,而不是私人令牌(像Gitlab API)工作,則應更換:

$authorization = "Authorization: Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274"

有:

$authorization = "PRIVATE-TOKEN 080042cad6356ad5dc0a720c18b53b8e53d4c274";

0
  1. 您必須初始化CURL請求URL
  2. En代碼數據,以JSON
  3. 創建功能,這樣你就可以重用代碼後

    function jwt_request($token, $post=[]) { 
    
        $ch = curl_init('https://REQUEST_URL/v1/data...'); // INITIALISE CURL 
    
        header('Content-Type: application/json'); 
        $post = json_encode($post,true); // Create JSON string from data ARRAY 
        $authorization = "Authorization: Bearer ".$token; 
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization)); 
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
        curl_setopt($ch, CURLOPT_POSTFIELDS,$post); 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
        $result = curl_exec($ch); 
        curl_close($ch); 
        return json_decode($result); 
    
    } 
    
    $token = "080042cad6356ad5dc0a720c18b53b8e53d4c274"; // GET YOUR TOKEN FROM A COOKIE OR DB 
    $post = array('some_data'=>array('some','values')); // SOME ARRAY OF DATA 
    
    print_r(jwt_request($token,$post)); // GET RESULTS 
    

使用它作爲一種方式或2路請求:

jwt_request($token,$post); // - To pass data 

jwt_request($token); // - To retreave data