我正在嘗試在appengine中獲取用戶的電子郵件。 我無法在web.xml文件中使用UserService。如何使用oauth2服務帳戶獲取登錄用戶的電子郵件?
我正在使用OAuth2和「服務帳戶」,這樣如果域管理員給它高,用戶應該是透明的。
這是我正在使用的代碼,但我無法找到任何解決方案。 因爲當我用「Google Plus服務」請求用戶電子郵件時,請返回oauth2 clientID。
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("[email protected]")
.setServiceAccountScopes(Arrays.asList(
"https://www.googleapis.com/auth/plus.me",
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/userinfo.profile"))
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(
"WEB-INF/yyyyyyyyyyyyyyyyyy-privatekey.p12"))
.build();
Plus plus = new Plus(HTTP_TRANSPORT, JSON_FACTORY, credential);
Person profile = plus.people().get("me").execute();
String email=profile.getEmails().get(0);
String state = new BigInteger(130, new SecureRandom()).toString(32);
String send="https://accounts.google.com/o/oauth2/auth?"+
"scope=https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile&"+
"state=url%3Dhttps%253A%252F%rrrrrrrrrrrrrrr.appspot.com%26security_token%3D"+state+"&"+
"redirect_uri=https://rrrrrrrrrrrrrrrr.appspot.com/vuelta&"+
"response_type=id_token&"+
"login_hint="+email+"&"+
"client_id=Client_ID_for_web_application.apps.googleusercontent.com";
resp.sendRedirect(send);
我該如何繼續?
在此先感謝。
在回調方法中,你的回答不是那些部分嗎? – kosa
i當我從googlePlus服務獲取用戶時,總是返回我在'setServiceAccountId。(「[email protected]」)中設置的值' 即:'Client_ID_Service_Account @ developer.gserviceaccount.com' – user2606850