在友盟分享的基础上集成微信登录

2022-12-19 13:00:09 浏览数 (5)

转载请以链接形式标明出处:

http://blog.csdn.net/lxk_1993/article/details/52933357

本文出自:【lxk_1993的博客】; 

 刚开始做微信登录集成的时候,

项目已经集成了友盟分享,

有问iOS那边是怎么弄的,

是直接用友盟的还是微信的,

然后iOS那边说了一句用的是微信的,

然后我就默默地去微信开发平台去看文档去了,

说实话,

微信的文档真是差,

而且demo是很久之前的...

不知道多久没更新了,

我有看到一些代码的注释是12年写的....

按文档写了一些,

没成就直接不用微信的了,

直接去用友盟的....

友盟文档地址:http://dev.umeng.com/social/android/quick-integration

按友盟的文档弄好需要集成的文件之后,

然后再包名下加个wxapi的包,

然后创建一个WXEntryActivity,

继承自WXCallbackActivity.

代码语言:javascript复制
public class WXEntryActivity extends WXCallbackActivity {

}

然后再点击事件的时候调用下面的代码.

代码语言:javascript复制
    private void loginwithWechat() {
        if (!MyApplication.api.isWXAppInstalled()) {
            showToast(getString(R.string.msg_no_wechat));
        } else {
            UMShareAPI mShareAPI = UMShareAPI.get(context);
            mShareAPI.doOauthVerify(getActivity(), SHARE_MEDIA.WEIXIN, umAuthListener);//授权
        }

    }
代码语言:javascript复制
    private UMAuthListener umAuthListener = new UMAuthListener() {
        @Override
        public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
            //授权成功 然后获取用户信息
            UMShareAPI mShareAPI = UMShareAPI.get(context);
            mShareAPI.getPlatformInfo(getActivity(), SHARE_MEDIA.WEIXIN, umAuthListener1);
        }

        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {
            Toast.makeText(context, "授权失败", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText(context, "授权取消", Toast.LENGTH_SHORT).show();
        }
    };
代码语言:javascript复制
  private UMAuthListener umAuthListener1 = new UMAuthListener() {
        @Override
        public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {

            String json = "{"openid":""   map.get("openid")   "","
                      ""nickname":""   map.get("screen_name")   "","
                      ""sex":""   map.get("gender")   "","
                      ""province":""   map.get("province")   "","
                      ""city":""   map.get("city")   "","
                      ""country":""   map.get("country")   "","
                      ""headimgur":""   map.get("profile_image_url")   "","
                      ""privilege":[],"
                      ""unionid":""   map.get("unionid")   ""}";
            //再调用你们后台写的微信登录相关的接口,
        }

        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {
            Toast.makeText(context, "获取用户信息失败", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText(context, "取消获取用户信息", Toast.LENGTH_SHORT).show();
        }
    };

话说为什么友盟获取到用户的基本信息之后,

存到map中的key并不是微信返回的字段,

所以就有了上面那个json字符串拼接的代码...

上面代码写得比较烂,

可以再自行修改下.

有问题请留言.

0 人点赞