详细的Android微信登录教程

创建应用及申请AppId

  1. 点击按钮创建应用
    详细的Android微信登录教程_第1张图片

  2. 填写基本信息

    详细的Android微信登录教程_第2张图片

  3. 填写平台信息
    详细的Android微信登录教程_第3张图片

    填写应用签名和报名,签名可以通过微信平台提供的签名获取工具进行获取     传送门[签名获取工具](https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=b6513fcf593d4a41d9c9a765ecb04240f1338794&lang=zh_CN)
    
  4. 提交审核,等待审核通过后获得AppSecert

将微信登录接入应用

  1. 引入微信api
    compile ‘com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+’

  2. 调用微信登录
    “`
    //APPID是指你应用在微信开放平台上的AppID,记得替换。
    mWxApi = WXAPIFactory.createWXAPI(this, APPID, false);

    *// 将该app注册到微信*
    mWxApi.registerApp(APPID);
    
    SendAuth.Req req = new SendAuth.Req();
    
    req.scope = "snsapi_userinfo";//可以获取用户信息
    
    req.state = "wechat_sdk_demo_test";//用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击
    
    mWxApi.sendReq(req);
    
  3. 创建WXEntryActivity接收回调(位置必须是项目包名.wxapi.WXEntryActivity)

    public class WXEntryActivity  implements IWXAPIEventHandler {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        *//该句必须写,不然没有回调*
        mWxApi.handleIntent(getIntent(),this);
    }
    
    
    @Override
    public void onReq(BaseReq baseReq) {
    
    }
    
    @Override
    public void onResp(BaseResp resp) { *//处理回调结果*
        switch (resp.errCode) {
    
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
                ToastUtil.shortShow("授权出错");
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                ToastUtil.shortShow("取消登录");
                break;
            case BaseResp.ErrCode.ERR_OK:
                ToastUtil.shortShow("授权成功,正在登录");
                String code = ((SendAuth.Resp) resp).code;
    
                //通过该code值获取access_token
                //调用接口https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
    //然后根据返回的access_token和code值调用如下接口获取用户信息
    //https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
    
    
                break;
        }
    }
    }

    注意
    在AndroidManifest.xml中对WXEntryActivity进行配置时必须设置android:exported=”true” 否则回调不起作用

    小结:
    1.如果微信调起失败可能appId填写错误,或者当前app签名和申请appId时的签名不一致
    2.调起微信同意授权后,回调不起做用可能原因:
    mWxApi.handleIntent(getIntent(),this);没有写
    或者清单文件配置中android:exported=”true”没有设置

提示:

    尽可能将WXEntryActivity当做登录界面,如果WXEntryActivity为一个单独的界面时,授权成功后会显示一个白屏

你可能感兴趣的:(三方登录)