文档首页> > 最佳实践> APP用户身份验证

APP用户身份验证

分享
更新时间: 2019/07/08 09:50

本文以验证游戏APP用户身份为例,为您介绍如何使用SMN提供的JAVA SDK,通过短信验证码验证用户身份。

背景描述

假设您开发了一款游戏APP,拥有众多玩家。游戏中,购买游戏装备等操作涉及资金来往。此时,为了确保资金的安全,验证玩家的身份显得尤其重要。一般来讲,使用短信验证码来验证玩家身份是目前可靠的方法。华为云是否提供了此类功能供我来直接调用并完成身份验证呢?

解决方案

使用华为云消息通知服务(SMN)的短信发送功能。

您可以通过华为云SMN提供的JAVA SDK,通过短信验证码核实玩家的身份。

前提条件

  • 完成实名认证且认证方式为企业认证。
  • 确保账号余额>=100元。

具体步骤

  1. 获取代码所需的参数。
    1. 登录华为云。
    2. 单击右上角用户名下的“账号中心”,进入基本信息界面。
    3. 单击“管理我的凭证”,在“我的凭证”页面获取您的用户名、账号名、确定您所在的区域并获取该区域对应的项目名称(如图中的ap-southeast-1)。
      图1 我的凭证
  2. 获取短信签名ID。
    1. 登录控制台。
    2. 在控制台左上角单击图标,选择区域和项目。
    3. 在“服务列表”下拉框中,选择“应用服务 > 消息通知服务”。

      进入消息通知服务页面。

    4. 在左侧导航栏,选择“短信 > 短信签名”,进入短信签名页面。
    5. 在短信签名页面,查看签名ID。
      图2 获取签名ID
  3. 集成SMN JAVA SDK。
    1. 单击此处,下载SDK包。

    2. 在Eclipse中导入SDK的JAR文件。

      依次选择菜单:工程 > Properties > Java Build Path > Add External JARs。

  4. 发送验证码,参见代码样例
  5. 游戏玩家接收验证码,如图3所示。
    图3 验证码

    游戏玩家在APP上输入获取到的短信验证码,游戏APP所在的后台服务器会进行匹配和验证。

    • 输入的验证码正确,则允许进行资金交易。
    • 输入的验证码错误,则禁止进行资金交易。

代码样例

import com.smn.client.DefaultSmnClient;
import com.smn.client.SmnClient;
import com.smn.request.sms.SmsPublishRequest;
import com.smn.response.sms.SmsPublishResponse;
public class SmsDemo {
    public static void main(String[] args) {
        SmnClient smnClient = new DefaultSmnClient(
                "YourAccountUserName",
                "YourAccountDomainName",
                "YourAccountPassword",
                "YourRegionName");
        // 构造请求对象
        SmsPublishRequest smnRequest = new SmsPublishRequest();
        // 设置参数,接收手机号,短信内容,短信签名ID
        smnRequest.setEndpoint("+86136*****587")
                .setMessage("您的验证码为:123456(5分钟内有效),为了保证账户安全,请勿向任何人提供此验证码。")
                .setSignId("6be340e91e52******837e6709104");
        // 发送短信
        try {
            SmsPublishResponse res = smnClient.sendRequest(smnRequest);
            System.out.println("httpCode:" + res.getHttpCode()
                    + ",message_id:" + res.getMessageId()
                    + ", request_id:" + res.getRequestId()
                    + ", errormessage:" + res.getMessage());
        } catch (Exception e) {
            // 处理异常
            e.printStackTrace();
        }
    }
} 

代码样例参数如下所述。

  • “YourAccountPassword”为您登录华为云的密码。
  • “YourAccountUserName” 、“YourAccountDomainName”和“YourRegionName” 为 1中获取的参数。
    • “YourAccountUserName”为用户名
    • “YourAccountDomainName”为账号名
    • “YourRegionName”为所在区域的项目名称(如图1的ap-southeast-1。更多区域信息请参考地区和终端节点
  • “SignId”为2中获取的短信签名ID。
如果您喜欢这篇文档,您还可以:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区