55、android app借助友盟实现微信授权登录

时间:2024-01-13 18:38:38

一、去微信开放平台的管理中心申请移动设备的审核(需进行开发者资质认证,每年300元)

1、获取应用的签名

55、android app借助友盟实现微信授权登录

2、在微信开放平台申请移动应用

两个注意点:①签名要填对 ②应用的包名要写对(tips: com.**.**)

55、android app借助友盟实现微信授权登录

应用通过审核完成后是这样的:

55、android app借助友盟实现微信授权登录

在应用通过审核后,拿到了AppId和AppSecret,这样我们具备了和微信授权登录的基本条件。

二、导入友盟的第三方登录的jar包和资源

jar需要4个:

httpmime-4.1.3.jar SocialSDK_WeiXin_1.jar SocialSDK_WeiXin_2.jar umeng_social_sdk.jar

三、微信授权登录

     /**
* @功能描述 : 添加微信平台授权登录
* @return
*/
private void addWXPlatform() {
// 注意:在微信授权的时候,必须传递appSecret mController = UMServiceFactory.getUMSocialService("com.umeng.login");
// 添加微信平台,APP_ID、APP_SECRET都是在微信开放平台,移动应用通过审核后获取到的
UMWXHandler wxHandler = new UMWXHandler(LoginActivity.this, APP_ID, APP_SECRET); wxHandler.setRefreshTokenAvailable(false);
wxHandler.addToSocialSDK(); }
/**
* 授权。如果授权成功,则获取用户信息
*
* @param platform
*/
private void login(final SHARE_MEDIA platform) {
mController.doOauthVerify(LoginActivity.this, platform,
new SocializeListeners.UMAuthListener() { @Override
public void onStart(SHARE_MEDIA platform) {
Toast.makeText(LoginActivity.this, "授权开始", Toast.LENGTH_SHORT).show();
} @Override
public void onError(SocializeException e,
SHARE_MEDIA platform) {
Toast.makeText(LoginActivity.this, "授权失败", Toast.LENGTH_SHORT).show();
} @Override
public void onComplete(Bundle value, SHARE_MEDIA platform) {
// 获取uid
String uid = value.getString("uid");
if (!TextUtils.isEmpty(uid)) {
// uid不为空,获取用户信息
getUserInfo(platform);
Toast.makeText(LoginActivity.this,"uid is "+uid, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(LoginActivity.this, "授权失败...", Toast.LENGTH_LONG).show();
}
} @Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(LoginActivity.this, "授权取消", Toast.LENGTH_SHORT).show();
}
});
} /**
* 获取用户信息
*
* @param platform
*/
private void getUserInfo(SHARE_MEDIA platform) {
mController.getPlatformInfo(LoginActivity.this, platform,
new SocializeListeners.UMDataListener() { @Override
public void onStart() { } @Override
public void onComplete(int status, Map<String, Object> info) {
// String showText = "";
// if (status == StatusCode.ST_CODE_SUCCESSED) {
// showText = "用户名:" +
// info.get("screen_name").toString();
// Log.d("#########", "##########" + info.toString());
// } else {
// showText = "获取用户信息失败";
// } if (info != null) {
Toast.makeText(LoginActivity.this, info.toString(), Toast.LENGTH_SHORT).show();
String infoStr = info.toString();
CommonUtils.LogWuwei(tag,"info is "+infoStr);
}
}
});
} /**
* 注销本次登陆
* @param platform
*/
private void logout(final SHARE_MEDIA platform) {
mController.deleteOauth(LoginActivity.this, platform,
new SocializeListeners.SocializeClientListener() { @Override
public void onStart() { } @Override
public void onComplete(int status, SocializeEntity entity) {
String showText = "解除" + platform.toString() + "平台授权成功";
if (status != StatusCode.ST_CODE_SUCCESSED) {
showText = "解除" + platform.toString() + "平台授权失败[" + status + "]";
}
Toast.makeText(LoginActivity.this, showText, Toast.LENGTH_SHORT).show();
}
});
}

1、自定义宏APP_ID、APP_SECRET(都是从开放平台申请到的)

2、在微信授权登录之前,首先进行初始化(调用addWXPlatform方法进行初始化)

3、在需要授权登录时,调用login方法即可,在授权之后会在回调中得到用户的信息

比如说open_id、nickname、headimgurl、access_token等