0

我正在使用當前有2個模塊的App Engine服務器。我有用於端點和同步模塊的默認模塊。 這個第二個模塊用於將我的服務器與另一個模塊同步。因此,我的同步模塊從其他服務器獲取數據,並且必須使用端點將其發送到默認模塊。 爲此,我生成了endpoints_client_library並將庫添加到我的同步模塊中。我嘗試了很多案例,但無法正確傳達我的終端。每次我收到錯誤,如「401未經授權」。Appengine:調用同一服務器上另一個模塊的端點

所以我不知道這是否是使用生成的端點客戶端庫我的服務器上以正確的方式或是否有另一種解決方案,也許simplier ...

我只是想從我同步發送數據模塊默認。

如果你需要一些代碼,即使它不是非常完整,根本不工作,只要說出口即可。

我使用的網址提取代碼:

AppIdentityService appIdentity = AppIdentityServiceFactory.getAppIdentityService(); 
AppIdentityService.GetAccessTokenResult accessToken = appIdentity.getAccessToken(Collections.singleton(scope)); 



URLFetchService fetcher = URLFetchServiceFactory.getURLFetchService(); 
FetchOptions options = FetchOptions.Builder.doNotFollowRedirects().disallowTruncate(); 
HTTPRequest request = new HTTPRequest(url, HTTPMethod.GET, options); 

HTTPHeader userAgent = new HTTPHeader("User-Agent", "AppEngine-Google; (+http://code.google.com/appengine; appid: appId)"); 
request.addHeader(userAgent); 
HTTPHeader autho = new HTTPHeader("Authorization", "OAuth "+accessToken.getAccessToken()); 
request.addHeader(autho); 
HTTPHeader contentType = new HTTPHeader("Content-Type", "application/json"); 
request.addHeader(contentType); 

HTTPResponse response = fetcher.fetch(request); 

int code = response.getResponseCode(); 
String resp = new String(response.getContent()); 

System.out.println(code); 
System.out.println(resp); 

而結果:

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "required", 
    "message": "{\"class\":\"com.domain.server.cloud.CloudException\",\"code\":2}", 
    "locationType": "header", 
    "location": "Authorization" 
    } 
    ], 
    "code": 401, 
    "message": "{\"class\":\"com.domain.server.cloud.CloudException\",\"code\":2}" 
} 
} 

回答

2

按照App Engine Modules in JavaCommunication between Modules的一般準則。在第二個代碼示例之後,它說您也可以使用URL Fetch Service來進行異步流量控制。

爲了安全起見,文檔繼續爲被調用模塊(您的端點)提供建議來驗證請求。手動或基本縮放管理登錄解決方案通常不起作用,因爲默認情況下是自動縮放。 Inbound-AppId標頭在您的方案中是一個非常簡單和安全的選擇。

正如您願意爲您的問題添加更多詳細信息一樣,我很樂意嘗試爲此答案添加更多詳細信息。

+0

是的,我已閱讀此頁。我也嘗試使用URLFetch在模塊之間進行通信,問題是我總是有授權錯誤。在同步模塊上,我有一個登錄用戶,但我無法通過URLFetch將其發送到默認模塊,我的意思是我沒有找到如何執行... –

+0

我明白。這些安全建議可以讓您在沒有記錄用戶標識的情況下進行網址提取,換句話說就是匿名但仍然安全。然後,您可以將記錄的用戶標識作爲簡單數據而不是憑據。 –

+0

不幸的是,在任何情況下,appengine服務器上的端點都需要登錄的用戶。這就是問題所在......我將在主帖中添加我的URLFetch代碼。 –

相關問題