55、android app借助友盟实现微信授权登录
一、去微信开放平台的管理中心申请移动设备的审核(需进行开发者资质认证,每年300元)
1、获取应用的签名
2、在微信开放平台申请移动应用
两个注意点:①签名要填对 ②应用的包名要写对(tips: com.**.**)
应用通过审核完成后是这样的:
在应用通过审核后,拿到了AppId和AppSecret,这样我们具备了和微信授权登录的基本条件。
二、导入友盟的第三方登录的jar包和资源
jar需要4个:
httpmime-4.1.3.jar SocialSDK_WeiXin_1.jar SocialSDK_WeiXin_2.jar umeng_social_sdk.jar
三、微信授权登录
1 /** 2 * @功能描述 : 添加微信平台授权登录 3 * @return 4 */ 5 private void addWXPlatform() { 6 // 注意:在微信授权的时候,必须传递appSecret 7 8 mController = UMServiceFactory.getUMSocialService("com.umeng.login"); 9 // 添加微信平台,APP_ID、APP_SECRET都是在微信开放平台,移动应用通过审核后获取到的 10 UMWXHandler wxHandler = new UMWXHandler(LoginActivity.this, APP_ID, APP_SECRET); 11 12 wxHandler.setRefreshTokenAvailable(false); 13 wxHandler.addToSocialSDK(); 14 15 } 16 /** 17 * 授权。如果授权成功,则获取用户信息 18 * 19 * @param platform 20 */ 21 private void login(final SHARE_MEDIA platform) { 22 mController.doOauthVerify(LoginActivity.this, platform, 23 new SocializeListeners.UMAuthListener() { 24 25 @Override 26 public void onStart(SHARE_MEDIA platform) { 27 Toast.makeText(LoginActivity.this, "授权开始", Toast.LENGTH_SHORT).show(); 28 } 29 30 @Override 31 public void onError(SocializeException e, 32 SHARE_MEDIA platform) { 33 Toast.makeText(LoginActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); 34 } 35 36 @Override 37 public void onComplete(Bundle value, SHARE_MEDIA platform) { 38 // 获取uid 39 String uid = value.getString("uid"); 40 if (!TextUtils.isEmpty(uid)) { 41 // uid不为空,获取用户信息 42 getUserInfo(platform); 43 Toast.makeText(LoginActivity.this,"uid is "+uid, Toast.LENGTH_LONG).show(); 44 } else { 45 Toast.makeText(LoginActivity.this, "授权失败...", Toast.LENGTH_LONG).show(); 46 } 47 } 48 49 @Override 50 public void onCancel(SHARE_MEDIA platform) { 51 Toast.makeText(LoginActivity.this, "授权取消", Toast.LENGTH_SHORT).show(); 52 } 53 }); 54 } 55 56 /** 57 * 获取用户信息 58 * 59 * @param platform 60 */ 61 private void getUserInfo(SHARE_MEDIA platform) { 62 mController.getPlatformInfo(LoginActivity.this, platform, 63 new SocializeListeners.UMDataListener() { 64 65 @Override 66 public void onStart() { 67 68 } 69 70 @Override 71 public void onComplete(int status, Map<String, Object> info) { 72 // String showText = ""; 73 // if (status == StatusCode.ST_CODE_SUCCESSED) { 74 // showText = "用户名:" + 75 // info.get("screen_name").toString(); 76 // Log.d("#########", "##########" + info.toString()); 77 // } else { 78 // showText = "获取用户信息失败"; 79 // } 80 81 if (info != null) { 82 Toast.makeText(LoginActivity.this, info.toString(), Toast.LENGTH_SHORT).show(); 83 String infoStr = info.toString(); 84 CommonUtils.LogWuwei(tag,"info is "+infoStr); 85 } 86 } 87 }); 88 } 89 90 /** 91 * 注销本次登陆 92 * @param platform 93 */ 94 private void logout(final SHARE_MEDIA platform) { 95 mController.deleteOauth(LoginActivity.this, platform, 96 new SocializeListeners.SocializeClientListener() { 97 98 @Override 99 public void onStart() { 100 101 } 102 103 @Override 104 public void onComplete(int status, SocializeEntity entity) { 105 String showText = "解除" + platform.toString() + "平台授权成功"; 106 if (status != StatusCode.ST_CODE_SUCCESSED) { 107 showText = "解除" + platform.toString() + "平台授权失败[" + status + "]"; 108 } 109 Toast.makeText(LoginActivity.this, showText, Toast.LENGTH_SHORT).show(); 110 } 111 }); 112 }
1、自定义宏APP_ID、APP_SECRET(都是从开放平台申请到的)
2、在微信授权登录之前,首先进行初始化(调用addWXPlatform方法进行初始化)
3、在需要授权登录时,调用login方法即可,在授权之后会在回调中得到用户的信息
比如说open_id、nickname、headimgurl、access_token等