美文网首页
微信登陆的快速开发

微信登陆的快速开发

作者: 6d4fea58b0b7 | 来源:发表于2019-05-13 17:08 被阅读0次

    这里记录一下快速集成微信登陆,网上也有很多,但是我这个是记录一下自己做的流程。可以直接把代码拷贝使用一气呵成。

    1、引入微信SDK依赖
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
    
    2、申明应用权限
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
    2、向微信注册APP
     这里首先要注册开发者帐号,取得APPID和AppSecret
    
    public class MyApplication extends Application {
    
     public static IWXAPI mWxApi;
    
    @Override
    public void onCreate() {
        super.onCreate();
        registerToWX();
    }
    
    private void registerToWX() {
        //第二个参数是指你应用在微信开放平台上的AppID
        mWxApi = WXAPIFactory.createWXAPI(this, MainConstant.WX.WEIXIN_APP_ID, false);
        // 将该app注册到微信
        mWxApi.registerApp(MainConstant.WX.WEIXIN_APP_ID);
       }
    }
    
    2、请求微信授权登录
      //先判断是否安装微信APP,按照微信的说法,目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。
         if (!WXUtils.isWXAppInstalled()) {
              ToastUtils.showToast("您还未安装微信客户端");
              return;
          }
        //微信登录
        public void wxLogin() {
            SendAuth.Req req = new SendAuth.Req();
            req.scope = "snsapi_userinfo";
            req.state = "diandi_wx_login";
            //像微信发送请求
            MyApplication.mWxApi.sendReq(req);
        }
    

    这个方法会跳到微信的授权界面,进行授权。 这里也有个坑点 ,你的app的签名和开发者里面的要一样才行。
    使用这个工具可以查看app的签名,资源地址: ![]{https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=d914a1d0def9667e020392cfd4462fe7bdd72db0&lang=zh_CN}

    5、创建WXEntryActivity.java来接收微信的响应事件
    • WXEntryActivity是一个Activity,用来接收微信的响应信息。这里有几个需要注意的地方:
    • 它必须在"包名.wxapi"这个包下,如:你的应用包名为:com.xx.test,则WXEntryActivity所在的包名必须为com.xx.test.wxapi。这里和签名一样,很重要,你如果名字错了,或者包名的位置错了,都是不能回调的,切记
      -创建后在AndroidManifest.xml文件中对WXEntryActivity进行设置:
    <!--微信-->
            <activity
                android:name=".wxapi.WXEntryActivity"
                android:configChanges="keyboardHidden|orientation|screenSize"
                android:exported="true"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    
    • WXEntryActivity的具体实现,主要是处理微信和app通信的不同event。
    public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {
      @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //这句没有写,是不能执行回调的方法的
            handleIntent(getIntent(), this);
        }
    
     public static boolean handleIntent(Intent intent, IWXAPIEventHandler var2) {
            if (intent == null) {
                return false;
            }
            return mWxApi.handleIntent(intent, var2);
        }
      // 微信发送请求到第三方应用时,会回调到该方法
        @Override
        public void onReq(BaseReq baseReq) {
    
        }
        // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
        //app发送消息给微信,处理返回消息的回调
        @Override
        public void onResp(BaseResp baseResp) {
              int type = baseResp.getType();  //类型:分享还是登录
              switch (baseResp.errCode) {
                   // 成功获得回调。
                case BaseResp.ErrCode.ERR_OK:
                      //1。得到code
                    String code = ((SendAuth.Resp) baseResp).code;
                     //2。根据code得到token和openid
                    String Url = https://api.weixin.qq.com/sns/oauth2/access_token?appid=你的APPID&secret=你的SECRET&code=你的CODE&grant_type=authorization_code;
                      //3。根据tokent和openid取得微信的个人信息
                      String url="https://api.weixin.qq.com//sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID";
                     //4。和服务器交互
              }
         }
    }
    

    这个是微信的接口地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316518&token=&lang=zh_CN

    相关文章

      网友评论

          本文标题:微信登陆的快速开发

          本文链接:https://www.haomeiwen.com/subject/qqlraqtx.html