Google Calendar + ajax +后端服务器

时间:2018-07-12 16:50:20

标签: google-calendar-api

我的堆栈,尽管我认为不一定相关,但后端是akka http,前端是scala.js。

我想使用谷歌日历api对我的应用执行各种操作,只要我直接访问路径,我的第一个测试就可以工作,但是现在我想真正地使其在多层环境中工作,因此,我想通过客户端中的ajax调用来调用我的路径。我的理解是,浏览器上的ajax调用会自动处理所需的任何重定向,而且由于Google需要一个实际的屏幕来完成身份验证工作,因此这显然行不通。

我的问题特别是当访问 my 服务器的访问Google api的调用发生在ajax上下文中时,如何管理google auth。

我在akka的路线如下:

    path("googleLogin2") {
  get {
    parameters('code.as[String]) { code => {
      val cal = GoogleCalendar(session.user.account)
      val flow = cal.flow
      val tokResponse = flow
        .newTokenRequest(code)
        .setRedirectUri("http://localhost:8083/googleLogin2")
        .execute();
      flow.createAndStoreCredential(tokResponse, session.user.account.name)
      complete("good")
    }
    }
  }
} ~
path("googleLogin1") {
  get {
    val cal = GoogleCalendar(session.user.account)
    val flow = cal.flow
    val credential = flow.loadCredential(session.user.account.name)
    if (credential != null &&
      (credential.getRefreshToken() != null ||
        credential.getExpiresInSeconds() == null ||
        credential.getExpiresInSeconds() > 60)) {
      //All good
      complete {
        None
      }
    } else {
      val url =
        flow
          .newAuthorizationUrl
          .setRedirectUri("http://localhost:8083/googleLogin2")
          .build()
      redirect(url, StatusCodes.Found)
    }
  }
}

我的scala.js看起来像这样:

Ajax.get(s"http://localhost:8083/googleLogin1")

0 个答案:

没有答案