微信新浪分享成功不走回调json
检查微信回调WXEntryActivity是不是在包名路径下,api
例如 包名是com.a.b(微信友盟开放平台),那么你这个activity应该放在com.a.b.wxapi文件夹下数组
包名为com.a.b ,这个activity放在com.a.b.view.wxapi文件夹下 致使微信回调失败(新浪同理)缓存
友盟分享我的小坑微信
微信分享: -error:错误码:2003错误信息:分享失败----权限验证失败,请检查你的签名以及该平台Appkey权限.微信开发
在确认签名无误已经已打包的状况下存在缓存问题,须要卸载微信以及你的APK重新安装app
dispatchMessage(122),这个是用户在本手机已登陆,以后又在另外一台设备登陆,本手机缓存微信已登陆状态引发的~异步
解决方法:点击微信,让手机知道微信处于未登陆状态便可ide
友盟分享成功后不须要导入任何包
微信openid和UnionID (多公众号如何判断是不是同一人)区别
经过获取用户基本信息接口,开发者可经过OpenID来获取用户基本信息,而若是开发者拥有多个公众号,可以使用如下办法经过UnionID机制来在多公众号之间进行用户账号互通。
1. 将多个公众号绑定到同一个微信开放平台(open.weixin.qq.com)账号下,即同一个Union下
2. 经过获取用户基本信息接口中的UnionID来区分用户的惟一性,不过须要注意的是:公众号只有在被绑定到微信开放平台账号下后,才会获取UnionID。只要是同一个微信开放平台账号下的公众号,用户的UnionID是惟一的。换句话说, 同一用户,对同一个微信开放平台账号下的不一样应用,UnionID是相同的。
注意两个不一样的用户信息
在不一样的公众帐号下openid是不同的,而他们的unionid倒是同样的。其余的信息不具备惟一性,没有比较意义。但基本信息是一致的。
这样就知道了关注两个公众帐号的实际上是同一我的。
unionid意义:
对于拥有多个帐号的企业来讲,unionid能够帮助识别不一样公众帐号下的用户是不是同一我的。这样在不一样帐号下对该用户提供的服务能够连续起来了。
还能够去除重复关注的用户数,便于统计真实的关注用户总数。
要第三方登录的话:
SHARE_MEDIA platform = SHARE_MEDIA.WEIXIN;
UMShareAPI mShareAPI = UMShareAPI.get(this);
mShareAPI.doOauthVerify(this, platform, umAuthListener);
//友盟第三方登录回调
private UMAuthListener umAuthListener = new UMAuthListener() {
@Override
public void onComplete(SHARE_MEDIA platform, int action, Map data) {
data.toString()//返回的用户参数
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show();
}
};
微信官方文档,哈哈:
获取用户我的信息(UnionID机制)
接口说明
此接口用于获取用户我的信息。开发者可经过OpenID来获取用户基本信息。特别须要注意的是,若是开发者拥有多个移动应用、网站应用和公众账号,可经过获取用户基本信息中的unionid来区分用户的惟一性,由于只要是同一个微信开放平台账号下的移动应用、网站应用和公众账号,用户的unionid是惟一的。换句话说,同一用户,对同一个微信开放平台下的不一样应用,unionid是相同的。请注意,在用户修改微信头像后,旧的微信头像URL将会失效,所以开发者应该本身在获取用户信息后,将头像图片保存下来,避免微信头像URL失效后的异常状况。
请求说明
http请求方式: GET
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
参数说明
参数
是否必须
说明
access_token
是
调用凭证
openid
是
普通用户的标识,对当前开发者账号惟一
lang
否
国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语,默认为zh-CN
返回说明
正确的Json返回结果:
{
"openid":"OPENID",
"nickname":"NICKNAME",
"sex":1,
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"privilege":[
"PRIVILEGE1",
"PRIVILEGE2"
],
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
参数
说明
openid
普通用户的标识,对当前开发者账号惟一
nickname
普通用户昵称
sex
普通用户性别,1为男性,2为女性
province
普通用户我的资料填写的省份
city
普通用户我的资料填写的城市
country
国家,如中国为CN
headimgurl
用户头像,最后一个数值表明正方形头像大小(有0、4六、6四、9六、132数值可选,0表明640*640正方形头像),用户没有头像时该项为空
privilege
用户特权信息,json数组,如微信沃卡用户为(chinaunicom)
unionid
用户统一标识。针对一个微信开放平台账号下的应用,同一用户的unionid是惟一的。
建议:
开发者最好保存unionID信息,以便之后在不一样应用之间进行用户信息互通。
错误的Json返回示例:
{
"errcode":40003,"errmsg":"invalid openid"
}
支付宝登陆:
private voidsetAliAuth() {
MDialog.Builder mDialog = newMDialog.Builder(mContext,"还没有受权,请先前往支付宝受权?");mDialog.setPositiveButton("去受权", newDialogInterface.OnClickListener() {
@Overridepublic voidonClick(DialogInterface dialog, intwhich) {
Runnable authRunnable = newRunnable() {
@Overridepublic voidrun() {
// 构造AuthTask 对象AuthTask authTask = newAuthTask(IDCardCreditActivity.this);// 调用受权接口,获取受权结果//后台生成//authUrl="apiname=com.alipay.account.auth&app_id=你的APPID&app_name=mc&auth_type=AUTHACCOUNT// &biz_type=openservice&method=alipay.open.auth.sdk.code.get&pid=你帐号的PID&product_id=APP_FAST_LOGIN// &scope=kuaijie&sign_type=RSA2&target_id=-8979618297616007166&sign=本身生成"Map result = authTask.authV2(authUrl, true);Message msg = newMessage();msg.what= SDK_AUTH_FLAG;msg.obj= result;mHandlerAli.sendMessage(msg);}
};// 必须异步调用Thread authThread = newThread(authRunnable);authThread.start();}
});mDialog.create().show();}
private static final intSDK_AUTH_FLAG= 3;@SuppressLint("HandlerLeak")
privateHandler mHandlerAli= newHandler() {
@SuppressWarnings("unused")
public voidhandleMessage(Message msg) {
switch(msg.what) {
caseSDK_AUTH_FLAG: {
@SuppressWarnings("unchecked")
AuthResult authResult = newAuthResult((Map) msg.obj, true);String resultStatus = authResult.getResultStatus();// 判断resultStatus 为“9000”且result_code// 为“200”则表明受权成功,具体状态码表明含义可参考受权接口文档if(TextUtils.equals(resultStatus,"9000") && TextUtils.equals(authResult.getResultCode(),"200")) {
// 获取alipay_open_id,调支付时做为参数extern_token 的value// 传入,则支付帐户为该受权帐户result= authResult.getResult();MLog.e("受权成功\n"+ String.format("authCode:%s",authResult.getResult()));} else{
// 其余状态值则为受权失败MyToast.showMessage("受权失败");}
break;}
}
}
};