友盟最新版本6.9.0集成微信登录
首先说一下集成的步骤
1.到微信开发者平台注册软件并获取软件的AppID和AppSecret
2 创建签名文件,配置签名。并在微信开发者平台注册签名信息。
3.创建友盟开发者账号,创建应用,获取appkey
4.下载微信登录相关的sdk,并集成到项目中
5.添加微信回调activity
6.配置Android Manifest XML,注册微信回调activity,添加权限
7.在application中初始化,配置微信平台对应的软件信息(AppID和AppSecret)
8.配置签名。
完成上面的这些步骤后就实现友盟微信登录了
在gradle中配置
signingConfigs {
release {
storeFile file('蔬菜配送系统.keystore')
storePassword 'SCPSXT_Beta_CN_MB_V1.0'
keyAlias '蔬菜配送系统'
keyPassword 'SCPSXT_Beta_CN_MB_V1.0'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
微信开发者平台注册签名信息。 这个地方一定要注意 有坑!!!
应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图8.9所示,绿色串即应用签名。签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk
这个地方配置不好,容易出现下列异常
java.lang.Throwable: 错误码:2002 错误信息:授权失败----[SA10001]权限验证失败,请检查你的签名以及该平台Appkey权限.
解决方案:https://developer.umeng.com/docs/66632/detail/66787?um_channel=sdk
图中圈住的就是应用签名信息,将这个数据添加到微信开发平台上,一个也不能错,如果错了,改正后,软件可能也有问题,可能报2002错误。需要微信清除缓存才可解决,所以一定要认真
三.如果你没有友盟的开发者账号,就到这里注册。如果有开发者账号就到这里创建你的应用并得到appkey。
创建应用
注意:后台的应用名与实际应用名和包名无关,建议命名为应用名+平台(iOS/Android)。
四.下载微信登录相关的sdk,并集成到项目中下载地址,把相关的文件放到自己项目中对应的位置,我会将demo上传到github上,不用下载这些SDK,直接在我项目里拷贝就行了
五.添加微信回调activity
这个地方有坑,请注意!!!
在包名目录下,一定要在包名路径下。创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。
创建完目录结构是这样的
六 配置Android Manifest XML,添加权限,注册微信回调activity
需要添加的权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
注册微信回调activity
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
这个WXEntryActivity在清单中的配置必须和上面的一模一样
在Application中调用友盟的初始化接口:
//初始化组件化基础库, 统计SDK/推送SDK/分享SDK都必须调用此初始化接口
UMConfigure.init(this, "5b3a1f97a40fa369ea000044",
"", UMConfigure.DEVICE_TYPE_PHONE, "");
配置微信平台对应的软件信息(AppID和AppSecret)
{
PlatformConfig.setWeixin("wxdfeeca73484a5f0a", "cdba5aeeac2ea12d0072c79212a44233");
}
第一个参数是软件在微信开放平台注册后产生的AppID,第二个参数是AppSecret,关于这两个参数上面有介绍
大功告成,下面开始调用微信的api实现微信授权,并获取微信的信息
UMShareAPI.get(this).getPlatformInfo(this, SHARE_MEDIA.WEIXIN, authListener);
下面是事件的监听
UMAuthListener authListener = new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
Toast.makeText(LoginActivity.this, "开始", Toast.LENGTH_LONG).show();
}
@Override
public void onComplete(SHARE_MEDIA platform, int action, Map data) {
String unionid = data.get("unionid");
showToast(unionid);
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText(LoginActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show();
}
};
参考demo地址:https://github.com/DevelopWb/YoumengLoadWeixin.git