Web客戶端:https://gcl-11.appspot.com/如何爲谷歌創建一個匿名android.gms.auth.GoogleAccountCredential端點
源代碼:https://github.com/gertcuykens/gcl-11/blob/master/android/src/my/endpoints/EndpointsActivity.java
這個例子是使用谷歌的端點與Android。我設法讓它正常工作,除非在沒有bad username
錯誤的情況下我可以到達服務器之前,對於未經身份驗證的首次登錄請求也是強制性的。在webclient中,它不是。
約:
EndpointsClient.Builder endpoints = new EndpointsClient.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential);
問題:
是否有可能使用在谷歌的端點非用戶對象的API請求匿名的Android客戶端?我試圖設置一個空的帳戶名稱,但後來我得到bad username
?
credential = GoogleAccountCredential.usingAudience(this, AUDIENCE);
credential.setSelectedAccountName("");
如果不是,我可以指定一個默認的,而不使用getSelectedAccountName()
?
此外,爲什麼這不會返回像webclient用戶的電子郵件?
Message response = service.post("greetings/authed", null).setOauthToken(token).execute();
當你說「匿名」你的意思是你不希望客戶端進行身份驗證? –
僅當服務器需要像我爲Web客戶端所做的用戶對象時。看來,我需要在android中爲所有api請求設置一個憑證,併爲服務器用戶對象添加一個額外的oauth2標記,但當android發出api請求時,我還沒有設法使用它。 –
這是調用https://github.com/gertcuykens/gcl-11/blob/master/appengine/rs/src/main/java/rest1/Greetings.java?如果是這樣,除非您傳遞有效的用戶對象,否則您將獲得NPE。我認爲您在Android中看到的行爲正在按預期工作,而更大的問題是您的Web客戶端在未通過身份驗證的情況下工作的原因。 –