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     }
View Code

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

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

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

比如说open_id、nickname、headimgurl、access_token等

原文地址:https://www.cnblogs.com/kunyashaw/p/4825975.html