Android 钉钉第三方登录问题

20 篇文章 0 订阅

使用钉钉第三方登录

第一步 去钉钉开发者平台注册App

钉钉开发者平台地址
在这里插入图片描述
注册自己的应用
*获取到自己的AppId 和 AppKey

钉钉开发者文档

在这里插入图片描述

实现步骤

1、注入依赖


	 implementation 'com.aliyun.ams:alicloud-android-push:3.2.+'

2、在您的包名相应目录下新建一个ddshare。


需要注意的是名字一定要相同

然后在AndroidManifest文件中添加exported属性,设置为true。

<activity
            android:exported="true"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:launchMode="singleInstance"
            android:name="xxx.xxxx.xxxx.ddshare.DDShareActivity">
</activity>
换成你自己的路径名字

/**
*  注意   BToast.showText(); 是我自己封装的Toast
* 	      Logger也是一个封装   可以改成Log
*
*/

public class DDShareActivity extends Activity implements IDDAPIEventHandler {

    private IDDShareApi mIDDShareApi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("lzc", "onCreate==========>");
        EventBusManager.getInstance().register(this);
        try {
            //activity的export为true,try起来,防止第三方拒绝服务攻击
            mIDDShareApi = DDShareApiFactory.createDDShareApi(this,
                   "放入你的AppId",
                    true);
            mIDDShareApi.handleIntent(getIntent(), this);

//            sendAuth();
        } catch (Exception e) {
            e.printStackTrace();
            Log.d("lzc", "错误信息===========>" + e.toString());
        }
    }

    @Override
    public void onReq(BaseReq baseReq) {
        Log.d("lzc", "onReq=============>");
    }

    @Override
    public void onResp(BaseResp baseResp) {
        int errCode = baseResp.mErrCode;
        Log.d("lzc", "errorCode==========>" + errCode);
        String errMsg = baseResp.mErrStr;
        Log.d("lzc", "errMsg==========>" + errMsg);

        if (baseResp.getType() == ShareConstant.COMMAND_SENDAUTH_V2 && (baseResp instanceof SendAuth.Resp)) {
            SendAuth.Resp authResp = (SendAuth.Resp) baseResp;
            switch (errCode) {
                case BaseResp.ErrCode.ERR_OK:
                   Logger.d( "授权成功");
                  	//authResp.code就是返回的授权码
                  	//传回到你自己的页面
                    break;
                case BaseResp.ErrCode.ERR_USER_CANCEL:
                    BToast.showText(this, "授权取消");
                    break;
                default:
                        BToast.showText(this, "登录失败" + baseResp.mErrStr);
                    break;
            }
        } else {
            switch (errCode) {
                case BaseResp.ErrCode.ERR_OK:
                    BToast.showText(this, "分享成功");
                    break;
                case BaseResp.ErrCode.ERR_USER_CANCEL:
                    BToast.showText(this, "分享取消");
                    break;
                default:
                        BToast.showText(this, "分享失败" + baseResp.mErrStr);
                    break;
            }
        }

        finish();
    }
}

3、调起钉钉登录的方式


    IDDShareApi    iddShareApi = DDShareApiFactory.createDDShareApi(LoginActivity.this, appKey, true);
    if (!isInstalled) {
            showToast("请安装钉钉");
            return;
        }
        SendAuth.Req req = new SendAuth.Req();
        boolean isSupport = req.getSupportVersion() <= iddShareApi.getDDSupportAPI();
        if (!isSupport) {
            showToast("不支持登录授权");
            return;
        }
        req.scope = SendAuth.Req.SNS_LOGIN;
        if (req.getSupportVersion() > iddShareApi.getDDSupportAPI()) {
            showToast("钉钉版本过低,不支持登录授权");
            return;
        }
        iddShareApi.sendReq(req);
		

到这里也就是可以跑起来了

4、遇到的问题


	1、在Android 11版本的手机中明明安装了钉钉
		但是会弹出“请安装钉钉的问题”
		
		出现的原因:Android11 要检查下包的可见性
		解决方法:<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
		缺点:可能上架会卡审核
	
	2、当跳转到钉钉授权的页面时,钉钉授权页面是空白的,弹出一个“出错了请重试”
		出现的原因:因为包名或者签名不对
		解决方法:查看安装的签名和包名是否和钉钉开发者平台的是否相同
		
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值