刚开始做微信登录集成的时候,
项目已经集成了友盟分享,
有问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<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();
}
};
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字符串拼接的代码...
上面代码写得比较烂,
可以再自行修改下.
有问题请留言.
如果你喜欢我写的文章,
请关注我!