Permissions 在Google的操作中获取用户ID

Permissions 在Google的操作中获取用户ID,permissions,actions-on-google,userid,Permissions,Actions On Google,Userid,在上,我找到了一个函数,该函数用于获取userID,以便在会话和设备中识别用户。在报告中,我读到以下内容: getUser()返回用户 获取用户对象。用户对象包含有关 用户,包括字符串标识符和个人信息(需要 请求权限,请参阅askForPermissions) 所以首先我需要申请许可。为此,我遵循链接。但是在那里我发现只有三个许可可以被请求 名字 设备\u粗略\u位置 设备的精确位置 没有授予该用户ID的权限。当我运行代码并尝试获取userID时,它返回undefined。获取用户名很好 f

在上,我找到了一个函数,该函数用于获取userID,以便在会话和设备中识别用户。在报告中,我读到以下内容:

getUser()返回用户

获取用户对象。用户对象包含有关 用户,包括字符串标识符和个人信息(需要 请求权限,请参阅askForPermissions)

所以首先我需要申请许可。为此,我遵循链接。但是在那里我发现只有三个许可可以被请求

  • 名字
  • 设备\u粗略\u位置
  • 设备的精确位置
没有授予该用户ID的权限。当我运行代码并尝试获取userID时,它返回undefined。获取用户名很好

function requestPermissonsIntent(app){
    const permission = [app.SupportedPermissions.NAME];
    app.askForPermission('Für eine korrekte Ausführung', permission);
}

//later in my code when asking for the userID and userName
if(app.isPermissionGranted()){
      const userName = app.getUserName().displayName;
      //getting the userName works fine

      const userUID = app.getUser().userID;
      //userUID is undefinded
      ...
如何获取用户ID?

它应该是小写的“d”

您无需请求任何权限即可获取此用户ID。在您的操作中,返回的字符串标识符对此用户是唯一的。如果它们使用相同的帐户,则应跨设备传输

更新

截至2018年5月,该计划已被弃用,并计划于2019年5月停止

如果您需要用户ID,您有几个选项:

  • 创建您自己的用户ID并将其保存在对象中,该对象将在会话之间保持。(但是,用户可以随时清空此存储。)

  • 使用,它允许用户在每次调用webhook时授予您获取其Google ID以及其他配置文件信息的权限


我真丢脸。有时候很容易。我已经阅读了我的代码很多次,但没有发现这个错误。现在我得到了用户ID,我更新了我的问题。是否有一种方法可以存储用户授予的权限?这实际上是一个单独的问题。继续,作为一个新的SO问题提问,我们会很乐意回答。(小写的d很容易漏掉。我自己也这么做过很多次。)@Capture:我刚刚发现这个
唯一的用户id
可以保存到
用户存储中
,以便在对话中工作。但点击后,它需要在谷歌主页应用程序中获得许可。因此,如果单击“停止我的服务以记住我”,我们无法将用户id保存到用户存储,因此即使使用相同的帐户,也无法在对话中传递唯一的用户id,对吗?是的,用户可以选择关闭此功能。在这种情况下,您每次都会看到一个新的用户ID。(另请注意,此功能已被弃用。请参阅更新。)
app.getUser().userId;