Android 集成微信sdk 实现微信登录

实现微信登录可划分为三步:

    1.首先获取微信授权,微信授权成功后会返回一个code到WXEntryActivity中的onResp方法中去

    2.通过上一步获取到的code来请求微信接口获取到accessToken和openId。

    请求接口:

    https://api.weixin.qq.com/sns/oauth2/access_token?    appid=AppID&secret=AppSecret&code=code&grant_type=    authorization_code"

    3.再通过第二部获取到的accessToken和openId来请求另一个微信接口从而获取到微信的用户信息来实现登录功能

     请求接口:"https://api.weixin.qq.com/sns/userinfo?access_token=accessToken&openid=openId"


具体步骤如下:

1.在Android studio中添加依赖 :

implementation compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

2.在AndroidManifest.xml文件中添加所需要的权限:

<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"/>

3.在项目的包名下创建名为wxapi包,然后再在此包下创建名为WXEntryActivity并继承自Activity,再实现IWXAPIEventHandler接口重写onRep和onResp方法(此activity是一个比叫特殊的类没有布局文件,微信所有的回调都是通过这个activity来实,没有设置布局文件,通常设置一个透明的主题,它的任务干完后就直接finish掉)。最后,还需要在AndroidMnifest.xml中注册activity添加代码如下:

<activity android:name=".wxapi.WXEntryActivity" android:exported="true"></activity>

4.准备工作做完下面开始实现微信登录:

    首先在WXEntryActivity的onCreate方法中做初始化工作

        //通过WXAPIFactory工厂获取IWXApI的示例
        api = WXAPIFactory.createWXAPI(this, APP_ID, true);
        //将应用的appid注册到微信
        api.registerApp(APP_ID);
        
        api.handleIntent(this.getIntent(), this);

然后处理微信授权后的回调

@Override
public void onResp(BaseResp baseResp) {
    switch (baseResp.errCode) {
        case BaseResp.ErrCode.ERR_OK: {
            if (baseResp instanceof  SendAuth.Resp) {
                SendAuth.Resp newResp = (SendAuth.Resp) baseResp;
                //获取微信返回的code
                final String code = newResp.code;
                Log.e(TAG, "微信返回的CODE:    " + code);
            break;
        }

        case BaseResp.ErrCode.ERR_USER_CANCEL: {
            //用户取消登录
            break;
        }

        case BaseResp.ErrCode.ERR_BAN: {
            //如果点击微信登录按钮没有调起微信授权界面,并且一直回调到这里,那很可能是手机问题,可以尝试重启手机
            break;
        }

        default:{ 
            break;
        }
    }
    finish();
}

5.最后在上面的集成工作完成后后就可以在起它的activity中发起微信登录的请求,执行代码如下:

api = WXAPIFactory.createWXAPI(getActivity(), Constants.APP_ID, false);
api.registerApp(APP_ID);
if (api != null && api.isWXAppInstalled()) {
    SendAuth.Req req = new SendAuth.Req();
    /*
    授权作用域(scope)代表用户授权给第三方的接口权限,第三方应用需要向微信开放平台申请使用相应scope的权限后,
    使用文档所述方式让用户进行授权,经过用户授权,获取到相应access_token后方可对接口进行调用。
    如获取用户个人信息则填写snsapi_userinfo
     */
    req.scope = "snsapi_userinfo";
    /*
    用于保持请求和回调的状态,授权请求后原样带回给第三方。
    该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
     */
    req.state = "wechat_sdk_demo";
    api.sendReq(req);
}else {
    Toast.makeText(getActivity(), "用户未安装微信", Toast.LENGTH_SHORT).show();
}

微信授权成功拿到code后就可通过上面提到的接口发送get请求获取用户信息来实现登录功能了。

代码中出现的AppID和AppSecret是在微信开放平台申请微信登录获取的




  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要实现Android Studio仿微信登录,可以按照以下步骤进行: 1. 创建一个新的Android Studio项目,并在布局文件中添加登录界面所需的控件,如EditText、Button等。 2. 在Java代码中编写登录逻辑,包括获取用户输入的账号和密码,验证账号密码是否正确,以及跳转到主界面等操作。 3. 在布局文件中添加微信登录按钮,并在Java代码中编写微信登录逻辑,包括调用微信SDK进行授权登录,获取用户信息等操作。 4. 在AndroidManifest.xml文件中添加微信SDK的配置信息,包括AppID等。 5. 运行程序,测试登录功能是否正常。 需要注意的是,仿微信登录需要使用微信SDK进行授权登录,因此需要在微信开放平台上注册开发者账号,并创建应用,获取AppID等信息。同时,还需要在Android Studio中导入微信SDK,并在项目中进行配置。 ### 回答2: Android Studio 是一款非常优秀的 Android 开发工具,它提供了强大的开发工具和丰富的开发库,使得开发者可以快速、高效地进行 Android 应用开发。本文将介绍如何使用 Android Studio 来仿制微信登录界面。 第一步:新建项目 首先,我们打开 Android Studio,选择 File -> New -> New Project,然后填写项目的名称和安装包名等基础信息,选择 API level 等选项,随后点击 Next 按钮。之后,我们可以选择生成空白活动、全屏活动、空白活动 + 片段等模板,这里我们选择生成空白活动的模板,然后点击 Finish 按钮完成新项目的建立。 第二步:导入微信登录界面 进入微信开发者平台,点击左侧菜单中的“开发”,然后选择“移动应用”,在弹出框中输入应用信息,点击确定按钮即可创建应用。创建完毕后,我们就可以获得微信 SDK,并将其导入到 Android Studio 项目中。 接下来,我们需要下载微信登录界面的资源文件,包括 logo、背景图、输入框等,将这些资源文件放置到项目的 res 目录中即可。接着,我们可以使用 Android Studio 的布局编辑器来搭建微信登录界面。 第三步:设置微信登录功能 要实现微信登录功能,我们需要在微信开发者平台创建应用后,获取到应用的 App ID 和 App Secret,这些信息将用于在 Android 应用中注册微信 SDK。在 Android Studio 中,我们需要将微信 SDK 集成到项目中,然后在 App 应用中注册 SDK,在启动微信登录功能的时候,调用微信登录 API 就可以了。 在注册微信 SDK 过程中,我们需要为应用签名,并将签名信息添加到微信开发者平台中,这样才能在应用中调用微信登录功能。最后,在微信登录成功后,我们需要将登录用户的信息保存在本地,以便于下次登录时直接获取。 总结 通过上述步骤,我们就可以快速、简单地创建一个仿微信登录界面的 Android 应用。虽然该应用只是一个简单的示例,但是它展示了 Android Studio 的强大功能和微信 SDK 的灵活性,希望对 Android 开发者有所帮助。 ### 回答3: Android StudioAndroid 开发领域最为常用的集成开发环境,开发者可以在这个集成环境中开发 Android 应用。其中学习和仿照微信登录可以给开发者提供一个很好的学习机会。 下面是如何仿照微信登录的步骤: 步骤一:创建项目 首先打开 Android Studio,然后从菜单中选择 File => New => New Project。在创建新项目的面板中,输入应用名称和包名,然后选择项目目录和项目类型。 步骤二:UI 设计 要实现微信登录模块,第一步是设计用户界面。微信登录界面通常包括以下元素: 1. 用户头像 2. 用户名输入框 3. 密码输入框 4. 登录按钮 在 Android Studio 中可以使用 XML 文件来创建界面。可以使用 约束布局来布局元素。可以先从数据库或后端获取用户信息并显示用户头像,使用 EditText 来实现用户名和密码输入框,并使用 Button 添加一个登录按钮。 步骤三:连接后端 微信需要连接到后端服务器才能验证用户信息。可以使用 Retrofit 和 OkHttp 库来连接服务端。可以使用以下代码实现与后端服务器连接: private void login() { String userName = etUserName.getText().toString(); String password = etPassword.getText().toString(); //TODO: Implement Retrofit and OkHttp // Verify username and password and get response Call<LoginResponse> call = api.login(new LoginRequest(userName, password)); call.enqueue(new Callback<LoginResponse>() { @Override public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) { // Handle response } @Override public void onFailure(Call<LoginResponse> call, Throwable t) { // Handle error } }); } 步骤四:处理响应 根据服务端的响应,可以执行以下操作: - 成功登录: 获取返回的数据,并跳转到主界面。 - 登录失败: 显示错误消息。 可以使用以下代码来处理响应: @Override public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) { if (response.isSuccessful()) { LoginResponse loginResponse = response.body(); if (loginResponse.isSuccess()) { // Successfully login, go to main activity Intent intent = new Intent(getApplicationContext(), MainActivity.class); startActivity(intent); finish(); } else { // Login failed, show error message Toast.makeText(getApplicationContext(), loginResponse.getMessage(), Toast.LENGTH_SHORT).show(); } } else { // Response failed Toast.makeText(getApplicationContext(), "Response failed", Toast.LENGTH_SHORT).show(); } } 至此,就完成了仿照微信登录的操作。通过这个项目,不仅可以学习 Retrofit 和 OkHttp 库,还可以了解如何使用 Android Studio 创建用户界面。 这个项目还可以帮助开发人员了解如何连接与后端服务端通信,如何处理响应,从而开发出更好的 Android 应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值