UserService.getCurrentUser()在Google App Engine上返回null

时间:2017-01-31 10:22:24

标签: java google-app-engine google-sheets

我有一个看起来像这样的用例:

  1. 用户输入extract
  2. 用户被重定向到Google进行身份验证
  3. 如果成功,应用程序会向Google发送http请求,以便针对Google云端硬盘上特定文件(工作表)的更改启用推送通知
  4. 用户输入Google表格并编辑文件。
  5. Google向我的应用程序(https://mydomain.appspot.com/listen)发送一篇http文章,其中包含文件ID和其他一些数据。
  6. 我的应用程序收到http帖子,验证文件ID并尝试打开文件以查看内容。
  7. 第6步不起作用。执行此操作时,我在第二行得到NullPointerException:

    {{1}}

    我真的不知道应该如何解决这个问题。在步骤1-3中,用户登录并授予对文件的访问权限。步骤5-6由Google触发。如果它是从用户触发的,则可以将用户重定向到登录页面。这不是一个选项,因为请求来自Google。

    有没有办法让这项工作?注意:有问题的文件属于特定用户。它不属于某种服务帐户。

    我的工作表身份验证基于Google提供的示例。看起来像这样:

    {{1}}

    以下是记录用户的代码,代表步骤1-3:

    {{1}}

    utils类:

    {{1}}

    “登录”完成时的回调:

    {{1}}

1 个答案:

答案 0 :(得分:0)

在步骤3中,您需要保存(例如,在数据存储区中)将通知注册,文档和用户联系在一起的映射信息(注册/通知中必须有一些上下文信息,因为同一用户可以观看多个文档,多个用户可以观看相同的文档)

在步骤6,应用程序根据通知(发布请求)上下文检索保存的映射信息,然后可以识别尝试打开文件时需要使用的用户凭据。