Android 友盟第三方登录步骤与遇到的坑

1,从友盟官网上下载sdk,勾选自己想要的

Android 友盟第三方登录步骤与遇到的坑_第1张图片

2.将jar包倒进项目

注意:友盟的jar包和QQ互联自己的一样,不要重复导入

Android 友盟第三方登录步骤与遇到的坑_第2张图片

3.在各个平台申请appkey,发现qq最方便,新浪和微信申请好麻烦

4.加入必要的权限






5.加入第三方的activity

QQ:


    
        

        
        

        
    

微信:

注意:WXEntryActivity是自己创建的

public class WXEntryActivity extends WXCallbackActivity {



}

新浪:






    
        
        
    

最后是友盟自己的:

6.初始化友盟,在application中

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //初始化友盟SDK
        UMShareAPI.get(this);//初始化sd
        UMConfigure.init(this, "5b5eb6e78f4a9d45230000a6", "Planet", UMConfigure.DEVICE_TYPE_PHONE,"");

        //开启debug模式,方便定位错误,具体错误检查方式可以查看
        //http://dev.umeng.com/social/android/quick-integration的报错必看,正式发布,请关闭该模式
        UMConfigure.setLogEnabled(true);
        //微信
        PlatformConfig.setWeixin("wxdc1e388c11111234", "3baf1193c85774b3fd9d11117d76cab0");
        //新浪微博(第三个参数为回调地址)
        PlatformConfig.setSinaWeibo("3519281234", "e8c27fcc18e170158c08e7f11c804ca9",
                "http://sns.whalecloud.com");
        //应用宝开放平台  APP ID  APP KEY
        PlatformConfig.setQQZone("101481234", "5d34e3b76972a5b2f4ece9046b9698a9");
    }
}

7.在activity中的操作,登入与分享的监听

/**
 * 友盟开始授权(登入)
 */
public static void shareLoginUmeng(final Activity activity, SHARE_MEDIA share_media_type) {

    UMShareAPI.get(activity).getPlatformInfo(activity, share_media_type, new UMAuthListener() {
        @Override
        public void onStart(SHARE_MEDIA share_media) {
            Log.e("授权开始", "onStart授权开始: ");
        }

        @Override
        public void onComplete(SHARE_MEDIA share_media, int i, Map map) {
            //sdk是6.4.5的,但是获取值的时候用的是6.2以前的(access_token)才能获取到值,未知原因
            String uid = map.get("uid");
            String openid = map.get("openid");//微博没有
            String unionid = map.get("unionid");//微博没有
            String access_token = map.get("access_token");
            String refresh_token = map.get("refresh_token");//微信,qq,微博都没有获取到
            String expires_in = map.get("expires_in");
            String name = map.get("name");//名称
            String gender = map.get("gender");//性别
            String iconurl = map.get("iconurl");//头像地址

            Log.e("openid", "onStart授权完成: " + openid);
            Log.e("unionid", "onStart授权完成: " + unionid);
            Log.e("access_token", "onStart授权完成: " + access_token);
            Log.e("refresh_token", "onStart授权完成: " + refresh_token);
            Log.e("expires_in", "onStart授权完成: " + expires_in);
            Log.e("uid", "onStart授权完成: " + uid);
            Log.e("name", "onStart授权完成: " + name);
            Log.e("gender", "onStart授权完成: " + gender);
            Log.e("iconurl", "onStart授权完成: " + iconurl);
        }

        @Override
        public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
            Toast.makeText(activity, "授权失败", Toast.LENGTH_LONG).show();
            Log.e("onError", "onError: " + "授权失败");
        }

        @Override
        public void onCancel(SHARE_MEDIA share_media, int i) {
            Toast.makeText(activity, "授权取消", Toast.LENGTH_LONG).show();
            Log.e("onError", "onError: " + "授权取消");
        }
    });
}
/**
 * 友盟取消授权(登入)
 */
public static void umengDeleteOauth(Activity activity, SHARE_MEDIA share_media_type) {

    UMShareAPI.get(activity).deleteOauth(activity, share_media_type, new UMAuthListener() {
        @Override
        public void onStart(SHARE_MEDIA share_media) {
            //开始授权
            Log.e("onStart", "onStart: ");
        }

        @Override
        public void onComplete(SHARE_MEDIA share_media, int i, Map map) {
            //取消授权成功 i=1
            Log.e("onComplete", "onComplete: ");
        }

        @Override
        public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
            //授权出错
            Log.e("onError", "onError: ");
        }

        @Override
        public void onCancel(SHARE_MEDIA share_media, int i) {
            //取消授权
            Log.e("onCancel", "onCancel: ");
        }
    });
}
/**
 * 友盟分享
 * 上下文activity、分享的链接、标题、内容、类型
 * 若是要分享视频、音乐可看官方文档
 */
public static void shareWeb(final Activity activity, String WebUrl, String title, String description, SHARE_MEDIA
        platform) {
    UMImage thumb = new UMImage(activity, R.mipmap.ic_launcher);
    UMWeb web = new UMWeb(WebUrl);//连接地址(注意链接开头必须包含http)
    web.setTitle(title);//标题
    web.setDescription(description);//描述
    web.setThumb(thumb);//缩略图
    new ShareAction(activity)
            //分享的平台
            .setPlatform(platform)
            .withMedia(web)
            .setCallback(new UMShareListener() {
                /**
                 * @descrption 分享开始的回调
                 * @param share_media 平台类型
                 */
                @Override
                public void onStart(SHARE_MEDIA share_media) {
                    Log.e("onStart", "onStart开始分享的平台: " + share_media);
                }

                /**
                 * @descrption 分享成功的回调
                 * @param share_media 平台类型
                 */
                @Override
                public void onResult(final SHARE_MEDIA share_media) {
                    activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(activity, " 分享成功 ", Toast.LENGTH_SHORT).show();
                            Log.e("分享成功", "onStart分享成功的平台: " + share_media);
                        }
                    });
                }

                /**
                 * @descrption 分享失败的回调
                 * @param share_media 平台类型
                 * @param throwable 错误原因
                 */
                @Override
                public void onError(final SHARE_MEDIA share_media, final Throwable throwable) {
                    if (throwable != null) {
                        //失败原因
                        Log.e("失败", "throw:" + throwable.getMessage());
                    }
                    activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(activity, share_media + " 分享失败", Toast.LENGTH_SHORT).show();
                        }
                    });
                }

                /**
                 * @descrption 分享取消的回调
                 * @param share_media 平台类型
                 */
                @Override
                public void onCancel(final SHARE_MEDIA share_media) {
                    activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(activity, " 分享取消 ", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            })
            .share();
}

8.调用

 //取消授权
// UMLoginUtils.umengDeleteOauth(LoginActivity.this,SHARE_MEDIA.QQ);
 //开始授权
 //UMLoginUtils.shareLoginUmeng(LoginActivity.this, SHARE_MEDIA.QQ);
// UMLoginUtils.umengDeleteOauth(LoginActivity.this,SHARE_MEDIA.SINA);
//UMLoginUtils.shareLoginUmeng(this, SHARE_MEDIA.SINA);
 //UMLoginUtils.shareWeb(this, "http://www.baidu.com", "Hello Word", "Word", SHARE_MEDIA.QQ);
//分享实例
 UMLoginUtils.shareWeb(this, "http://www.baidu.com", "Hello Word", "Word", SHARE_MEDIA.QZONE);
 //shareWeb(this, "", "Hello Word", "Word", SHARE_MEDIA.SINA);
 //shareWeb(this, "", "Hello Word", "Word", SHARE_MEDIA.WEIXIN);
 //UMLoginUtils.umengDeleteOauth(LoginActivity.this,SHARE_MEDIA.WEIXIN);
 //UMLoginUtils.shareLoginUmeng(this, SHARE_MEDIA.WEIXIN);

9.回调

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}

完成以上步骤,就成功的接入了友盟的第三方登入和分享了

当然有可能会遇到一些问题

1.Android 友盟第三方登录步骤与遇到的坑_第3张图片

这种出现的原因是,导包时缺少了文件,解决方法就是去下载的包中,找到相对应的文件,复制到对应的目录下

 

你可能感兴趣的:(问题一览)