亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 PHP 文件中將 cURL 與 Google Apps Script Web

在 PHP 文件中將 cURL 與 Google Apps Script Web

PHP
夢里花落0921 2022-07-22 17:03:07
我試圖弄清楚為什么此代碼不適用于 Google Apps Script Web 應用程序 URL,但它會與隨機 Web API URL 一起使用?第一個代碼塊從虛擬 API 獲取數據。第二個代碼塊不會從 Google Apps 腳本網絡應用 URL 中返回任何內容。代碼中唯一的區別是 $url 變量值。GAS 應用程序設置為 Web 應用程序,因此任何人,甚至匿名者都可以訪問它(下面的屏幕截圖)。如果我直接轉到 GAS url GAS Output,它會返回 JSON。Google Apps 腳本代碼在下面的第三個代碼塊中。有任何想法嗎?感謝 Tanaike 解決了問題!工作代碼粘貼在問題的底部。第一個代碼塊<?php// Initiate curl session in a variable (resource)$curl_handle = curl_init();$url = "http://dummy.restapiexample.com/api/v1/employees";// Set the curl URL optioncurl_setopt($curl_handle, CURLOPT_URL, $url);// This option will return data as a string instead of direct outputcurl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);// Execute curl & store data in a variable$curl_data = curl_exec($curl_handle);curl_close($curl_handle);// Decode JSON into PHP array$user_data = json_decode($curl_data);// Print all data if neededprint_r($user_data);?>第二個代碼塊<?php// Initiate curl session in a variable (resource)$curl_handle = curl_init();$url = "https://script.google.com/macros/s/AKfycbyWSDzUyFa41fu_6QWP7h8ToklwWysGZsuSPaRnu649DmPNYG8/exec";// Set the curl URL optioncurl_setopt($curl_handle, CURLOPT_URL, $url);// This option will return data as a string instead of direct outputcurl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);// Execute curl & store data in a variable$curl_data = curl_exec($curl_handle);curl_close($curl_handle);// Decode JSON into PHP array$user_data = json_decode($curl_data);// Print all data if neededprint_r($user_data);?>第一個代碼塊:GAS 代碼function doGet(e) {  var data = {    status: 'success',    dataSet: 'Some Info'  };  var output = JSON.stringify(data);  return ContentService.createTextOutput(output).setMimeType(ContentService.MimeType.JSON);}工作代碼,謝謝Tanaike!<?php// Initiate curl session in a variable (resource)$curl_handle = curl_init();$url = "https://script.google.com/macros/s/AKfycbyWSDzUyFa41fu_6QWP7h8ToklwWysGZsuSPaRnu649DmPNYG8/exec";
查看完整描述

2 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

  • 您想使用 php 訪問 Web 應用程序。

  • 您想知道腳本運行時沒有顯示任何值的原因。

如果我的理解是正確的,這個答案怎么樣?請認為這只是幾個可能的答案之一。

您的問題原因:

在您的 Web 應用程序中,Execute the app as:Who has access to the app:分別設置為User accessing the web appAnyone。在這種情況下,當您訪問 Web 應用程序時,需要使用您的訪問令牌。因此,在您的腳本中,會發生錯誤。而是curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true)被使用。這樣,不顯示任何值。刪除時curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true),在您的腳本中,重定向頁面將作為 HTML 數據檢索。

為了避免這個問題,下面的修改如何?

模式一:

在您的腳本中,似乎沒有使用訪問令牌。在這種情況下,請將Execute the app as:和分別設置Who has access to the app:Me和。Anyone, even anonymous在這種情況下,不需要使用訪問令牌。

為此,請將以下腳本添加到您的腳本中以訪問 Web 應用程序。

curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true);

通過上述流程,您可以使用 php 腳本訪問 Web 應用程序并從 Web 應用程序中檢索值。

模式二:

如果要訪問分別以Execute the app as:Who has access to the app:asUser accessing the web app和部署的 Web 應用程序Anyone,則需要使用訪問令牌。

為此,請將以下腳本添加到您的腳本中以訪問 Web 應用程序。

curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true);

$header = ['Authorization: Bearer ###your access token###'];

curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $header);

筆記:

  • 在上述情況下,如果您作為 Web Apps 的所有者,在這種情況下讓其他用戶訪問您的 Web Apps,請與用戶共享部署 Web Apps 的 GAS 項目。這樣,用戶可以使用用戶的訪問令牌訪問 Web 應用程序。

筆記:

  • 當您在 Google Apps Script 端修改 Web Apps 的腳本時,請將 Web Apps 重新部署為新版本。這樣,最新的腳本就會反映到 Web 應用程序中。請注意這一點。


查看完整回答
反對 回復 2022-07-22
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

我嘗試在隱身窗口中訪問 Apps 腳本 URL,它會重定向到 Google 登錄提示。

當您使用該選項的User accessing the web app設置Execute the app as時,毫無疑問,該腳本將以訪問它的用戶身份運行。因此,使用您當前的設置,用戶需要登錄到 Google 帳戶才能成功執行應用程序

如果您將Execute the app as選項切換到,則會為該選項提供Me (<you address>)一個附加選項 ,。這是啟用對應用程序的真正匿名訪問的唯一方法。Anyone, even anonymousWho has access to this app

有關更多詳細信息,請參閱權限文檔。


查看完整回答
反對 回復 2022-07-22
  • 2 回答
  • 0 關注
  • 179 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號