如何在Alexa Skill中使用Java获取amazon用户电子邮件

如何在Alexa Skill中使用Java获取amazon用户电子邮件,java,alexa-skill,Java,Alexa Skill,我是Alexa技能发展方面的新手,我正在尝试一种Alexa用电子邮件回复的技能 我正在开发Java技能,我刚刚能够使用以下工具获取用户会话id: getSession().getUser().getUserId() 获取amzn1.ask.account.{id}作为解决方案 问题在于需要获取用户电子邮件(例如:username@gmail.com) 有什么办法吗 谢谢你的帮助 如前所述,这是通过解决的,我用来解决它的代码是: String accessToken = requestE

我是Alexa技能发展方面的新手,我正在尝试一种Alexa用电子邮件回复的技能

我正在开发Java技能,我刚刚能够使用以下工具获取用户会话id:

getSession().getUser().getUserId()
获取
amzn1.ask.account.{id}
作为解决方案

问题在于需要获取用户电子邮件(例如:username@gmail.com)

有什么办法吗

谢谢你的帮助

如前所述,这是通过解决的,我用来解决它的代码是:

    String accessToken = requestEnvelope.getSession().getUser().getAccessToken();
    String url = "https://api.amazon.com/user/profile?access_token=" + accessToken;
    JSONObject json = readJsonFromUrl(url);
    String email = json.getString("email");
    String name = json.getString("name");
使用JSON方法:

private static String readAll(Reader rd) throws IOException {
    StringBuilder sb = new StringBuilder();
    int cp;
    while ((cp = rd.read()) != -1) {
      sb.append((char) cp);
    }
    return sb.toString();
  }

public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
    InputStream is = new URL(url).openStream();
    try {
      BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
      String jsonText = readAll(rd);
      JSONObject json = new JSONObject(jsonText);
      return json;
    } finally {
      is.close();
    }
 }
  • 转到developer.amazon帐户,在那里您已经设置了alexa技能,在“Build”选项卡下,您将找到左侧菜单“Permissions”,并打开“Customer Email Address”权限
  • 转到->技能->您的技能->选择您的技能->设置->管理权限->打开您在第1点中打开的所需权限并保存
  • 在意图处理程序中的java代码中
    @Override
    公共可选句柄(HandlerInput){
    UpsServiceClient UpsServiceClient=input.getServiceClientFactory().getUpsService().getProfileEmail();
    }
    

  • 如果您需要详细说明,只需遵循以下简单步骤:

  • 对Amazon Profile API进行API调用

  • 调用此API,使用访问令牌获取用户配置文件。谢谢,这就是我要找的!我将发布我用来帮助所有需要它的人的代码作为答案