微信登陆的快速开发

2019-05-13  本文已影响0人  6d4fea58b0b7

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

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来接收微信的响应事件
<!--微信-->
        <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
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

上一篇下一篇

猜你喜欢

热点阅读