[英]how to authenticate google app script with GAE application using OAuth 2.0 [ GAS and GAE ]
我們已經開發了應用程序,它將使用OAuth 1.0通過GAS腳本與GAE應用程序進行交互,但是我們無法通過OAuth 2.0進行開發,這是因為OAuth訪問失敗。
getservice.hasAccess()始終返回false。 我對於必須在身份驗證過程中使用哪個URL感到非常困惑。
我已隨附Oauth 1和OAuth 2的源以供參考
Oauth 1.0
=========
envVars.url = myapp.appspot.com;
var oAuthConfig = UrlFetchApp.addOAuthService(envVars.serviceName);
oAuthConfig.setRequestTokenUrl(envVars.url + '/_ah/OAuthGetRequestToken');
oAuthConfig.setAuthorizationUrl(envVars.url + '/_ah/OAuthAuthorizeToken');
oAuthConfig.setAccessTokenUrl(envVars.url + '/_ah/OAuthGetAccessToken');
var requestData = {
"oAuthServiceName": envVars.serviceName,
"oAuthUseToken": "always"
};
requestData.muteHttpExceptions = true;
Oauth 2.0
=========
envVars.url = myapp.appspot.com
getservice = getService();
if (getservice.hasAccess()) {
Logger.log("All OK");
return;
}
else {
var authorizationUrl = getservice.getAuthorizationUrl();
Logger.log('Open the following URL and re-run the script: %s',
authorizationUrl);
showURL(authorizationUrl);
}
function getService()
{
return OAuth2.createService(envVars.serviceName)
// Set the endpoint URLs.
.setAuthorizationBaseUrl(envVars.url + '/_ah/OAuthAuthorizeToken')
.setTokenUrl(envVars.url + '/_ah/OAuthGetAccessToken')
// Set the client ID and secret.
.setClientId(CLIENT_ID)
.setClientSecret(CLIENT_SECRET)
// Set the name of the callback function that should be invoked to complete
// the OAuth flow.
.setCallbackFunction('authCallback')
// Set the property store where authorized tokens should be persisted.
.setPropertyStore(PropertiesService.getUserProperties());
}
請注意,OAuth 1.0於2012年4月20日正式棄用。建議您盡快將OAuth 1.0遷移到OAuth 2.0 。
如果腳本使用可以訪問私有數據的服務,則會出現授權對話框。 Apps腳本確定授權范圍。
如果代碼更改添加了新服務,您先前授權的腳本還將要求其他授權。 如果腳本僅使用無法訪問用戶數據的服務,則不請求授權
查看此文檔,其中討論了腳本的權限和類型: https : //developers.google.com/apps-script/guides/services/authorization#permissions_and_types_of_scripts
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.