全部产品
云市场

芝麻认证

更新时间:2019-09-09 15:11:52

my.startZMVerify

目前 mPaaS 不支持芝麻认证,如果您的应用已经集成芝麻认证并打算继续使用此 API,请参考 扩展说明 扩展此 API。

入参说明

名称 类型 必填 描述
bizNo string 认证标识
success Function 调用成功的回调函数
fail Function 调用失败的回调函数
complete Function 调用结束的回调函数(调用成功、失败都会执行)

success 返回值

名称 类型 必填 描述
token string 认证标识
passed string 认证是否通过
reason string 认证不通过原因

代码示例

  1. my.startZMVerify({
  2. bizNo: 'your-biz-no',
  3. success: (res) => {
  4. my.alert({ title: 'success:' + JSON.stringify(res)});
  5. },
  6. fail: (res) => {
  7. my.alert({ title: 'fail: ' + JSON.stringify(res)});
  8. },
  9. });

扩展说明

Android

您需要完成以下几步来扩展 API:

  1. 实现自定义 H5Plugin,需要拦截 zm-service 事件来处理用户授权。
  2. 入参与出参直接按照 API 的参数字段说明处理。
  3. 注册自定义 H5Plugin。

自定义 H5Plugin 代码示例(不包含注册):

  1. package com.mpaas.demo.nebula;
  2. import android.text.TextUtils;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.alipay.mobile.antui.dialog.AUNoticeDialog;
  5. import com.alipay.mobile.h5container.api.H5BridgeContext;
  6. import com.alipay.mobile.h5container.api.H5Event;
  7. import com.alipay.mobile.h5container.api.H5EventFilter;
  8. import com.alipay.mobile.h5container.api.H5SimplePlugin;
  9. public class H5ZmVerifyPlugin extends H5SimplePlugin {
  10. private static final String ZM_VERIFY = "zm-service";
  11. @Override
  12. public void onPrepare(H5EventFilter filter) {
  13. super.onPrepare(filter);
  14. filter.addAction(ZM_VERIFY);
  15. }
  16. @Override
  17. public boolean interceptEvent(H5Event event, final H5BridgeContext context) {
  18. if (ZM_VERIFY.equals(event.getAction())) {
  19. JSONObject param = event.getParam();
  20. String bizNo = param.getString("bizNo");
  21. if (!TextUtils.isEmpty(bizNo)) {
  22. AUNoticeDialog dialog = new AUNoticeDialog(event.getActivity(), "芝麻认证", "认证完成?", "完成", "取消");
  23. dialog.setPositiveListener(new AUNoticeDialog.OnClickPositiveListener() {
  24. @Override
  25. public void onClick() {
  26. JSONObject result = new JSONObject();
  27. result.put("token", "xxxxxx");
  28. result.put("passed", true);
  29. context.sendBridgeResult(result);
  30. }
  31. });
  32. dialog.setNegativeListener(new AUNoticeDialog.OnClickNegativeListener() {
  33. @Override
  34. public void onClick() {
  35. JSONObject result = new JSONObject();
  36. result.put("passed", false);
  37. result.put("reason", "用户取消");
  38. context.sendBridgeResult(result);
  39. }
  40. });
  41. dialog.show();
  42. } else {
  43. context.sendError(event, H5Event.Error.INVALID_PARAM);
  44. }
  45. return true;
  46. }
  47. return false;
  48. }
  49. }

iOS

参考 自定义 JSAPI > Plist 注册 > 注册 JSAPI 配置新的 JSAPI。

您需要完成以下几步来扩展 API:

  1. 开发者实现 startBizService 对应的 JSAPI 实现类 JsApiHandlerSample
  2. 出参处理:客户端返回给小程序返回的结果中,nick 会被映射为 nickNameuserAvatar 会被映射为 avatar,其他无变化。
  3. 注册自定义 JSAPI。
  4. 当向小程序返回正确的值时,请调用回调函数中 callback,具体返回值字段参见 success 返回值
  5. 当出现错误,需向小程序返回错误的值时,需调用回调函数中 callback 返回失败结果。

自定义 JSAPI 代码示例(不包含注册):

  1. #import "JsApiHandlerSample.h"
  2. #import <UIKit/UIKit.h>
  3. @interface JsApiHandlerSample()<UIAlertViewDelegate>
  4. @property (nonatomic, strong) NSMutableDictionary *result;
  5. @end
  6. @implementation JsApiHandlerSample
  7. - (void)handler:(NSDictionary *)data context:(PSDContext *)context callback:(PSDJsApiResponseCallbackBlock)callback
  8. {
  9. [super handler:data context:context callback:callback];
  10. NSString *serviceName = data[@"name"];
  11. NSString *bizNo = data[@"bizNo"];
  12. if (bizNo && [serviceName isEqualTo:@"zm-service"] && bizNo && [bizNo isKindOfClass:[NSString class]]) {
  13. UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"芝麻认证" message:@"认证完成?" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
  14. [alertView show];
  15. callback(self.result);
  16. } else {
  17. callback(@{@"error": @(e_inavlid_params)});
  18. }
  19. }
  20. - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
  21. {
  22. self.result = [NSMutableDictionary dictionary];
  23. if (0 == buttonIndex) {
  24. self.result[@"token"] = @"xxxxxx";
  25. self.result[@"passed"] = @"true";
  26. } else {
  27. self.result[@"reason"] = @"用户取消";
  28. self.result[@"passed"] = @"false";
  29. }
  30. }
  31. @end