2016-01-19 68 views
0

插入使用REST API(PHP代碼)在拉入隊列數據如何在GAE如何在GAE

插入使用REST API(PHP代碼)在拉入隊列數據

我按照以下鏈接 https://cloud.google.com/appengine/docs/python/taskqueue/rest/tasks/insert 我的代碼

$target_url = 'https://content.googleapis.com/taskqueue/v1beta2/projects/s~<projectname>/taskqueues/<task_queue_name>/tasks?key=<Server key >&alt=json'; 
$post = array('queueName' => '<task_queue_name>', 'payloadBase64'=>'aGVsbG8='); 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,$target_url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 
      $post); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$server_output = curl_exec ($ch); 
print_r($server_output); 
curl_close ($ch); 

但我不能插入在拉隊列中的數據,請幫我

我還配置queue.yaml中,在這裏設置ACL

結果

{ 「錯誤」:{ 「錯誤」:[{ 「域」: 「全局」, 「原因」: 「需要」, 「消息」: 「需要登錄」,「的locationType 「: 「頭」, 「位置」: 「授權」}], 「代碼」:401, 「消息」: 「需要登錄」}}

回答

0

TL; DR - 您不必手動進行的捲曲HTTP調用,你應該使用由谷歌,因爲它需要照顧所有的東西,權威性爲您提供的API Client Library

與Task Queue API(以及大多數Google Cloud Platform API)一起使用的授權類型是OAuth2。這要求發送一個'Authorization:Bearer'標頭,並且不要像你一樣發送服務器密鑰和查詢字符串。從您鏈接的同一文檔中,您可以使用「嘗試它!」部分來查看完整的HTTP請求與OAuth2的相似之處。

但是,推薦的與Google API交互的方式是使用提供的API Client Library for PHP,它負責爲您提供所有授權內容。如果您想了解詳細信息,請參閱Using OAuth 2.0 to Access Google APIs,其中包含使用PHP和原始HTTP的不同類型應用的示例。

下面未經測試的片段展示瞭如何使用帶的OAuth2服務帳戶可能看起來像插入與客戶端庫任務:

$client = new Google_Client(); 
$client->setScopes(['https://www.googleapis.com/auth/taskqueue']); 
$client->setAuthConfig($credentials_file); // This is your service account JSON key you need to export from the Developers Console 

$service = new Google_Service_Taskqueue($client); 
$results = $service->insert(opts...)