Android友盟微信登录
友盟最新版本6.9.0集成微信登录
首先说一下集成的步骤
1.到微信开发者平台注册软件并获取软件的AppID和AppSecret
2 创建签名文件,配置签名。并在微信开发者平台注册签名信息。
3.创建友盟开发者账号,创建应用,获取appkey
4.下载微信登录相关的sdk,并集成到项目中
5.添加微信回调activity
6.配置Android Manifest XML,注册微信回调activity,添加权限
7.在application中初始化,配置微信平台对应的软件信息(AppID和AppSecret)
8.配置签名。
完成上面的这些步骤后就实现友盟微信登录了
- 一 微信开发者平台注册软件
首先,到这里注册微信开发者账号,并获取开发者资质(花费300元),还要等待审核
其次创建应用,这里需要准备很多东西,要求的还特别细致,应用提交后还要等待审核。如下图
最后审核通过就能看到AppID和AppSecret了,如下图:
:
获取到的AppSecret一定要记录下来,平台不会再显示,所以如果你忘记了,平台是看不到的,只能重置。切记!! - 二 创建签名文件,配置签名。并在微信开发者平台注册签名信息。
签名文件的创建很简单,可以通过Androidstudio创建,也可以通过第三方工具创建,创建完成后,将签名文件放入项目中
在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中初始化,配置微信平台对应的软件信息(AppID和AppSecret)
在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<String, String> 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();
}
};