- HMSAgent.Hwid.signIn(boolean forceLogin, SignInHandler handler)
登录华为帐号,并获取帐号相关信息:昵称、openid、头像地址等。HMS SDK 2.6.1.300以及更高版本提供获取UnionId的能力。
| 参数名 | 参数类型 | 是否必填 | 说明 |
| forceLogin | boolean | 是 | 是否强制登录。 ● True:如果华为帐号未登录会拉起登录界面,如果未授权会拉起授权界面 ● False:如果已经登录授权直接返回帐号信息,否则返回失败错误码 |
| handler | SignInHandler | 是 | 登录结果通过此实例回调给调用方。 |
- public interface SignInHandler {
- /**
- * 登录结果回调
- * @param rtnCode 结果码
- * @param hwidInfo 登录结果
- */
- void onResult(int rtnCode, SignInHuaweiId hwidInfo);
- }
回调参数包括retCode和hwidInfo,retCode是登录结果的错误码,融合了各个阶段的错误码,如果只需要判断错误码可直接使用。retCode取值和意义如表4-1所示。
表4-1 retCode说明
| 类型 | 返回码 | 值 | 意义 | 处理方式 |
| 通用错误码 | 参见“通用错误码”。 | |||
| 业务错误码 | HuaweiIdStatusCodes.SIGN_IN_SUCCESS | 0 | 登录授权成功 | |
| HuaweiIdStatusCodes.SIGN_IN_AUTH | 2002 | 业务需要授权 | ||
| HwIDConstant.RETCODE.SIGN_IN_PARAMS_ERROR | 2003 | 请求授权,参数错误 | ||
| HuaweiIdStatusCodes.SIGN_IN_NETWORK_ERROR | 2005 | 帐号在授权的过程中,发生网络超时等网络错误 | 检查网络后重试 | |
hwidInfo是SignInHuaweiId的实例,包含了登录结果信息,SignInHuaweiId各字段意义如表4-2所示。
表4-2 SignInHuaweiId说明
| 参数名 | 获取方式 | 意义 |
| openId | getOpenId() | 应用内用户的唯一标识。 |
| disPlayName | getDisplayName() | 返回用户昵称,用于在开发者的应用中显示。 |
| photoUrl | getPhotoUrl() | 如果用户设置了头像,则返回头像的url,否则返回null。 |
| accessToken | getAccessToken() | 返回用户的access token。access token是有有效期的。业务在调用网关API并获知access_token已超时的情况下(NSP_STATUS=6,网关详细错误列表),请调用signIn,重新获取access token。 |
| unionId | getUnionId() | 返回用户的UnionId。获取UnionId需要满足以下条件: 1、应用集成HMS SDK 2.6.1以及更高版本。 2、配套的HMS Core(APK)版本为2.6.1以及更高版本(配置指导请参见“开发准备 >4配置manifest文件”的步骤8 )。 3、应用申请了获取UnionId权限(申请权限操作请参见“UnionId说明”的“2 申请权限”)。 4、UnionId服务器接口以及相关应用迁移等注意事项参见“UnionId说明”。 |