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

刚开始做微信登录集成的时候,
项目已经集成了友盟分享,
有问iOS那边是怎么弄的,
是直接用友盟的还是微信的,
然后iOS那边说了一句用的是微信的,
然后我就默默地去微信开发平台去看文档去了,
说实话,
微信的文档真是差,
而且demo是很久之前的...
不知道多久没更新了,
我有看到一些代码的注释是12年写的....
按文档写了一些,
没成就直接不用微信的了,
直接去用友盟的....

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

按友盟的文档弄好需要集成的文件之后,
然后再包名下加个wxapi的包,
然后创建一个WXEntryActivity,
继承自WXCallbackActivity.

public class WXEntryActivity extends WXCallbackActivity {  
}  

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

 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);//授权  
    }  
}  

  private UMAuthListener umAuthListener = new UMAuthListener() {  
      @Override  
    public void onComplete(SHARE_MEDIA share_media, int i, Map 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();  
    }  
};  

private UMAuthListener umAuthListener1 = new UMAuthListener() {  
      @Override  
       public void onComplete(SHARE_MEDIA share_media, int i, Map 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字符串拼接的代码...
上面代码写得比较烂,
可以再自行修改下.

有问题请留言.
如果你喜欢我写的文章,
请关注我!

你可能感兴趣的:(在友盟分享的基础上集成微信登录)