zoukankan      html  css  js  c++  java
  • 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等

  • 相关阅读:
    Python学习笔记5
    Python字符串的encode与decode
    python代码`if not x:` 和`if x is not None:`和`if not x is None:`
    关于sys.argv
    Python学习笔记4
    Python学习笔记3
    Python学习笔记2
    生产者消费者_测试
    进程管理
    软件包管理
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/4825975.html
Copyright © 2011-2022 走看看