我想將谷歌分析圖形合併到Web應用程序以顯示其應用程序用法的用戶統計信息。這是當地的網址http://192.168.100.10:9000/
我登錄到儀表板(網絡應用程序)我有一個谷歌登錄按鈕。到目前爲止,在這裏我保持用戶登錄後的會話。播放框架。在谷歌重定向後會話變爲空登錄頁面
並且當用戶點擊登錄按鈕時。它觸發回調方法。當第一次觸發回調時,它會保持會話。我的意思是session("user")
在這裏不是null。
public Result callback() {
JsonNode jsonNode = Json.parse(session("user"));
UserDTO userDTO = Json.fromJson(jsonNode, UserDTO.class);
if (userDTO.getRole().getType().equals(RoleDTO.EnRoleType.ADMIN.toString()))
return redirect(com.softoven.ultron.controllers.routes.AccountCTRL.index());
if (request().queryString().get("code") != null && request().queryString().get("state") != null && request().queryString().get("state")[0].equals(session("state"))) { // Check if he/she is authorized
session().remove("state");
Analytics analytics = setAnalytics(userDTO, request());
session("analytics", Json.toJson(analytics).toString());
return redirect(com.softoven.ultron.controllers.routes.AccountCTRL.index());
} else { // Create Authorization URL
String url = helper.buildLoginUrl();
session("state", helper.getStateToken());
return redirect(url);
}
}
這是URL,當用戶點擊登錄按鈕 https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&client_id=784122128025-cvq0fn1e23f24dia4soavsd9v1ovesub.apps.googleusercontent.com&redirect_uri=http://localhost:9000/callback&response_type=code&scope=https://www.googleapis.com/auth/analytics.readonly%20https://www.googleapis.com/auth/analytics.manage.users%20https://www.googleapis.com/auth/analytics%20https://www.googleapis.com/auth/analytics.edit%20https://www.googleapis.com/auth/analytics.manage.users.readonly%20https://www.googleapis.com/auth/analytics.provision&state=google-35808300
當在隨後控制了谷歌標誌的許可頁面上allow
按鈕,用戶點擊追溯到callback()
但這次session("user")
爲空。它不應該爲空,因爲我在用戶登錄時設置了會話。我不知道爲什麼會發生,以及如何解決此問題。
這是從google權限頁面重定向後的最終網址。 http://localhost:9000/callback?state=google-35808300&code=4/g-FkJ3GGS01jbeXLHK0o95ks-K-drGK7bxgzvi3cELU#
您是否在使用[Google Java客戶端庫](https://developers.google.com/api-client-library/java/google-api-java-client/oauth2#web_server_applications)?如果不是,它可能會大大簡化你正在嘗試做的事情。 – Matt
是的,我正在使用谷歌Java客戶端庫。 –
IP/localhost?確定一致或使用真實域名並重試(使用hosts文件僞造真實的域名)。 HTTP會話與Cookie相關聯,cookie是IP /域特定的。瀏覽器對此也非常嚴格,例如Chrome不喜歡將cookie域明確設置爲「localhost」。 – BalusC