微信登录

首先微信授权登录和支付分为客户端(通过微信官方平台)集成和原生集成

原生集成:需要跟后台进行对接

客户端集成:是自己到微信官方平台去操作即可 跟咱们友盟分享登录一样

1:导入依赖:implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

2:keystore文件放到app目录下

3:在app的build.gradle 中Android 代码块加入keystore文件配置

signingConfigs {//在android代码块下写

    debug {//这个地方可以写成 release

        storeFile file('tech.keystore')

        keyAlias "tech"

        storePassword "123456"

        keyPassword "123456"

    }

}

为避免写错,写在Module的android版本号下面

4:在项目包下一个包名为wxapi,以下代码都写在这个里面

4.1:接下来开始具体代码

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {

private IWXAPIiwxapi;

    private Stringunionid;

    private Stringopenid;

    private static StringAPP_ID ="wx4c96b6b8da494224";

    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

        // 隐藏状态栏

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        //接收到分享以及登录的intent传递handleIntent方法,处理结果

        iwxapi = WXAPIFactory.createWXAPI(this, APP_ID, false);

        iwxapi.handleIntent(getIntent(), this);

    }

@Override

    public void onReq(BaseReq baseReq) {

Log.e("onReq", "不是请求错误");//我们一般用不到

    }

//成功的回调

    @Override

    public void onResp(BaseResp baseResp) {

//登录回调

        switch (baseResp.errCode) {

case BaseResp.ErrCode.ERR_OK://代表成功

                if (baseRespinstanceof SendAuth.Resp) {

SendAuth.Resp newResp = (SendAuth.Resp) baseResp;

                    //获取微信传回的code

                    String code = newResp.code;

                    RetrofitManager.getInstance().weChatLogin(code, new Observer() {

@Override

                        public void onSubscribe(Disposable d) {

}

@Override

                        public void onNext(WXBean wxBean) {

if (wxBean.getStatus().equals("0000")) {

Log.d("tag", wxBean.getMessage());

                                SharedPreferences user = MyApplication.context.getSharedPreferences("user", MODE_PRIVATE);

                                user.edit()

.putString("userId", wxBean.getResult().getUserId() +"")

.putString("sessionId", wxBean.getResult().getSessionId())

.putBoolean("login", true)

.commit();

                                startActivity(new Intent(WXEntryActivity.this, MainActivity.class));

                                Toast.makeText(WXEntryActivity.this, wxBean.getMessage(), Toast.LENGTH_SHORT).show();

                            }

}

@Override

                        public void onError(Throwable e) {

}

@Override

                        public void onComplete() {

}

});

                }

break;

            case BaseResp.ErrCode.ERR_AUTH_DENIED://用户拒绝授权

                finish();

break;

            case BaseResp.ErrCode.ERR_USER_CANCEL://用户取消

                finish();

break;

            default:

finish();

break;

        }

}

}


4.2:这个是工具类,用来对微信进行一些逻辑性的判断

public class WXUtils {

/**

* APP_ID 替换为你的应用从官方网站申请到的合法appID

*/

    public static StringAPP_ID="wx4c96b6b8da494224";

    public static IWXAPIreg(Context context) {

if (context !=null) {

//AppConst.WEIXIN.APP_ID是指你应用在微信开放平台上的AppID,记得替换。

            IWXAPI wxapi = WXAPIFactory.createWXAPI(context, APP_ID, true);

            //注册到微信

            wxapi.registerApp(APP_ID);

            return wxapi;

        }else {

return null;

        }

}

//判断是否安装过微信

    public static boolean success(Context context) {

if (WXUtils.reg(context).isWXAppInstalled()) {

return true;

        }else {

return false;

        }

}

}

4.3:接下来就是它的具体运用了,这个就是回调去调用微信授权的代码 所以在他之前要进入这个页面的要发起请求,然后

SendAuth.Req req =new SendAuth.Req();

req.scope ="snsapi_userinfo";

req.state ="wx_login_duzun";

WXUtils.reg(this).sendReq(req);

这就是微信登录的具体实现方法了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容