身份驗證和應用引擎,有很多需要閱讀的內容,但很多內容似乎已經過時!基於Java的Google App Engine,Android和身份驗證oauth2
在這裏,他們談「GoogleAccountCredential.usingAudience」,但現在,你應該使用GoogleAuthUtil(據我所知,請糾正我,如果我錯了)。
我想設置一個應用程序引擎作爲我的Android應用程序(以及將來,我的iOS應用程序)的後端。
我正在使用Android Studio,使用'新模塊'並選擇了帶有云消息的應用程序引擎。
我創建了一個簡單的端點,並有一個函數在那裏,這裏是一些代碼:
public class ReviewEndpoint {
// Make sure to add this endpoint to your web.xml file if this is a web application.
private static final Logger LOG = Logger.getLogger(ReviewEndpoint.class.getName());
/**
* This method gets the <code>Review</code> object associated with the specified <code>id</code>.
* @param id The id of the object to be returned.
* @return The <code>Review</code> associated with <code>id</code>.
*/
@ApiMethod(name = "getReview")
public Review getReview(@Named("id") Long id) {
// Implement this function
Review r = new Review();
r.setData("test!");
正如你可以看到,這是很好的的Android Studio生成。我實現了一些stuf,比如創建'review'對象並在最後返回它。
在Android方面,我可以這樣做:
ReviewEndpoint.Builder b = new ReviewEndpoint.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), null);
ReviewEndpoint ep = b.build();
Review review = ep.getReview(1L).execute();
data = review.getData();
,是的,我得到 '考驗!' :)
現在,我想要這個認證。我想知道哪個用戶寫了什麼,所以我想我以後會使用GMail帳戶和Facebook。
這裏我卡住了。我能夠從用戶那裏獲取令牌上的Android:
token = GoogleAuthUtil.getToken(MainScreenActivity.this, mAccount.name, "oauth2:https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.profile");
那麼你就能夠將此令牌作爲憑證添加到請求:
Credential cr = new Credential(BearerToken.authorizationHeaderAccessMethod()).setAccessToken(token);
ReviewEndpoint.Builder b = new ReviewEndpoint.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), cr);
然後在App Engine我試圖讓用戶信息,但如何? 它會作爲'承載者'提供嗎?我如何獲得這個不記名令牌?我應該做API請求來獲取服務器上的數據嗎?
這不起作用:
OAuthService service = OAuthServiceFactory.getOAuthService();
try {
User user = service.getCurrentUser();
誰能給我一擡頭?
你好@Boy,我使用OAuthService服務= OAuthServiceFactory.getOAuthService();與彈簧security.I已完成相同的步驟,你已經提到,但儘管id_token我傳遞GoogleAccountCredential對象仍然這OAuthService服務= OAuthServiceFactory.getOAuthService(); try { User user = service.getCurrentUser();不工作。請幫忙。 –
對不起,已經差不多3年了,我還沒有進一步研究。我對此不夠熟悉,以幫助您進一步: – Boy