前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在友盟分享的基础上集成微信登录

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

作者头像
103style
发布2022-12-19 13:00:09
2890
发布2022-12-19 13:00:09
举报
文章被收录于专栏:Android开发经验分享

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

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字符串拼接的代码...

上面代码写得比较烂,

可以再自行修改下.

有问题请留言.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档