title: 匿名身份认证

本篇文档介绍在 Wilddog Auth 中如何使用临时匿名帐号来进行身份认证。

前期准备

  1. 在控制面板中创建应用。请参考 控制面板-创建应用

  2. 在 控制面板 身份认证—登录方式 中打开匿名登录方式。

实现匿名身份认证

1.安装 Wilddog Auth SDK:

  1. compile 'com.wilddog.client:wilddog-auth-android:2.0.5'

2.创建 Wilddog Auth 实例:

  1. WilddogOptions options = new WilddogOptions.Builder().setSyncUrl("https://<wilddog appId>.wilddogio.com").build();
  2. WilddogApp.initializeApp(this, options);
  3. WilddogAuth mauth=WilddogAuth.getInstance();

3.调用 signInAnonymously()方法:

  1. mauth.signInAnonymously().addOnCompleteListener(new OnCompleteListener<AuthResult>() {
  2. @Override
  3. public void onComplete(Task<AuthResult> var1) {
  4. processResult(var1);
  5. if(var1.isSuccessful()){
  6. Log.d("success","Login success!");
  7. Log.d("Anonymous",String.valueOf(var1.getResult().getWilddogUser().isAnonymous()));
  8. }else {
  9. Log.d("failure","reason:"+var1.getException());
  10. }
  11. }
  12. });

4.signInAnonymously()方法调用成功后,可以在当前用户对象中获取用户数据:

  1. WilddogUser user = mauth.getCurrentUser();
  2. String uid = user.getUid();
  3. boolean isAnonymous = user.isAnonymous();

匿名帐号转成永久帐号

匿名登录的帐号数据将不会被保存,可以通过绑定邮箱认证或第三方认证方式将匿名帐号转成永久帐号。

绑定邮箱认证方式

绑定邮箱认证方式需要以下三个步骤:

1.以任意一种认证方式登录一个帐号。

2.获取邮箱认证方式的 credential。

  1. AuthCredential emailAuthCredential= EmailAuthProvider.getCredential("12345678@wilddog.com","password123");

3.使用邮箱认证方式绑定。

  1. WilddogUser user = mauth.getCurrentUser();
  2. user.linkWithCredential(emailAuthCredential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
  3. @Override
  4. public void onComplete(Task<AuthResult> task) {
  5. if(task.isSuccessful()){
  6. Log.d("result","绑定成功");
  7. }else {
  8. Log.d("result","绑定失败"+task.getException().toString());
  9. }
  10. }
  11. });

绑定第三方认证方式

绑定第三方认证方式需要以下三个步骤:

1.以任意一种认证方式登录一个帐号。

2.获取需要绑定认证方式的 credential。

  1. // QQ 认证
  2. AuthCredential qqAuthCredential= QQAuthProvider.getCredential(jsonObject.getString("access_token"));
  3. // 微博认证
  4. AuthCredential weiboAuthCredential= WeiboAuthProvider.getCredential(access_token,openid);
  5. // 微信认证
  6. AuthCredential weiXinAuthCredential= WeiXinAuthProvider.getCredential(code);

3.使用第三方认证方式绑定。

例如,使用 linkWithCredential 进行绑定:

  1. user.linkWithCredential(authCredential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
  2. @Override
  3. public void onComplete(Task<AuthResult> task) {
  4. if(task.isSuccessful()){
  5. Log.d("result","绑定成功");
  6. }else {
  7. Log.d("result","绑定失败"+task.getException().toString());
  8. }
  9. }
  10. });

注意:

若使用 customToken 登录时,若 customToken 中 admin 属性为 true,则不能进行关联操作。

退出登录

signOut 方法用于用户退出登录:

  1. mauth.signOut()

更多使用

  • 通过 WilddogAuth.getInstance().getCurrentUser() 获取当前用户并管理用户。详情请参考 用户管理
  • Wilddog Auth 可以将你的应用与 Wilddog Sync 无缝集成:使用匿名登录后,Wilddog Auth 将给用户生成 Wilddog ID。Wilddog ID 结合 规则表达式,可以控制 Wilddog Sync 的用户访问权限。