700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android友盟三方登录 微信新浪分享成功不走回调

Android友盟三方登录 微信新浪分享成功不走回调

时间:2022-09-09 15:15:39

相关推荐

Android友盟三方登录 微信新浪分享成功不走回调

微信新浪分享成功不走回调

检查微信回调WXEntryActivity是否是在包名路径下,

例如 包名是com.a.b(微信友盟开放平台),那么你这个activity应该放在com.a.b.wxapi文件夹下

包名为com.a.b ,这个activity放在com.a.b.view.wxapi文件夹下 导致微信回调失败(新浪同理)

友盟分享个人小坑

微信分享:-error:错误码: 错误信息:分享失败----权限验证失败,请检查你的签名以及该平台Appkey权限.

在确认签名无误已经已打包的情况下存在缓存问题,需要卸载微信以及你的APK从新安装

dispatchMessage(122),这个是用户在本手机已登录,之后又在另一台设备登录,本手机缓存微信已登录状态引起的~

解决方法:点击微信,让手机知道微信处于未登录状态即可

友盟分享成功后不需要导入任何包

友盟分享个人小坑

1、自定义分享面板中QQ空间分享(withTargetUrl)url会失败,但是单独用new ShareAction((Activity) context).setPlatform(SHARE_MEDIA.QZONE).withTargetUrl(url)就可以使用;

2、新浪微博分享(withTargetUrl)url会失败,.withText(url)也是可以的。

微信openid和UnionID (多公众号如何判断是否是同一人)区别

通过获取用户基本信息接口,开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个公众号,可使用以下办法通过UnionID机制来在多公众号之间进行用户帐号互通。

1. 将多个公众号绑定到同一个微信开放平台(open.)帐号下,即同一个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./sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

参数说明

返回说明

正确的Json返回结果:

{

"openid":"OPENID",

"nickname":"NICKNAME",

"sex":1,

"province":"PROVINCE",

"city":"CITY",

"country":"COUNTRY",

"headimgurl": "/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",

"privilege":[

"PRIVILEGE1",

"PRIVILEGE2"

],

"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"

}

建议:

开发者最好保存unionID信息,以便以后在不同应用之间进行用户信息互通。

错误的Json返回示例:

{

"errcode":40003,"errmsg":"invalid openid"

}

支付宝登录:

private void setAliAuth() {MDialog.Builder mDialog = new MDialog.Builder(mContext, "尚未授权,请先前往支付宝授权?");mDialog.setPositiveButton("去授权", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Runnable authRunnable = new Runnable() {@Overridepublic void run() {// 构造AuthTask 对象AuthTask authTask = new AuthTask(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<String, String> result = authTask.authV2(authUrl, true);Message msg = new Message();msg.what = SDK_AUTH_FLAG;msg.obj = result;mHandlerAli.sendMessage(msg);}};// 必须异步调用Thread authThread = new Thread(authRunnable);authThread.start();}});mDialog.create().show();}private static final int SDK_AUTH_FLAG = 3;@SuppressLint("HandlerLeak")private Handler mHandlerAli = new Handler() {@SuppressWarnings("unused")public void handleMessage(Message msg) {switch (msg.what) {case SDK_AUTH_FLAG: {@SuppressWarnings("unchecked")AuthResult authResult = new AuthResult((Map<String, String>) 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;}}}};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。