iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在android中实现一个微信联合登录功能
  • 640
分享到

怎么在android中实现一个微信联合登录功能

android 2023-05-30 19:05:18 640人浏览 独家记忆
摘要

怎么在Android中实现一个微信联合登录功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1):登录微信开放平台,完成账号申请:https://open.weixin.qq.

怎么在Android中实现一个微信联合登录功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1):登录微信开放平台,完成账号申请:https://open.weixin.qq.com

2):提交app完成审核,并开通相应权限:

怎么在android中实现一个微信联合登录功能

在提交app完成审核的过程中,我们需要提供app的包名与签名:

包名就是我们创建app时候的名称,可以通过manifest.xml和build.gradle中查看,如在manifest.xml中:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="Http://schemas.android.com/apk/res/android"package="com.yeejay.reader">...

在build.gradle中:

defaultConfig {  applicationId "com.yeejay.reader"  ...}

如果manifest.xml与build.gradle中不一致,将以build.gradle中的声明为准:

应用签名的获取会有一些麻烦,因为我们需要通过签名工具对我们的应用进行签名,如果不进行签名,每次安装apk时android平台会为我们生成默认签名,由于平台的不一致性,导致我们的apk装到不同的手机上签名不一致,最后导致无法正常使用微信登录与分享功能,所以我们要提前做好统一签名,整个签名流程如下:

(1)点击 build ---> Generate Signed Apk... ---> 选择app module ---> 填写生成keystore.jks的目录,密钥,有效期等信息;

(2)将生成的keystore.jks文件拷贝到project目录下的app目录下;

(3)在build.gradle文件中进行配置,代码如下:

signinGConfigs {  release {    storeFile file('keystore.jks')    storePassWord 'xxx'    keyAlias 'xxx'    keyPassword 'xxx'  }}buildTypes {  release {    minifyEnabled false    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    signingConfig signingConfigs.release  }  debug {    signingConfig signingConfigs.release  }}

将配置中的xxx改为生成keystore.jks时的密码信息;

(4)Sync同步下项目代码,完成后在右边的Gradle projects/app/build目录下双击assembleDebug或assembleRelease即可生成对应版本带有签名的apk。

(5)下载apk签名检测工具:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN

在最下面有一个签名生成工具,单击下载进行下载;

(6)将下载的apk签名工具安装到手机上,将之前生成的带有签名认证的apk也装到手机上,打开签名工具apk,如下图:

怎么在android中实现一个微信联合登录功能

输入包名,点击按钮生成对应的数字签名;

(7) 将包名与数字签名注册到我们的app审核过程中;

(8)漫长的等待...,也许是两三天,也许一两个礼拜。当我们的应用申请通过时,微信开放平台会返回给我们APP_ID与APP_SECRET信息。

当应用审核通过后,就到我们的代码实施阶段了,不过在写代码之前,我们先来了解一下OAuth3.0它的一个认证流程:

怎么在android中实现一个微信联合登录功能

整个过程的交互一共七个流程,当用户使用第三方应用请求微信登录时,此时会调起微信登录确认页面,并请求微信OAuth3.0进行授权,当用户确认登录时,这时微信平台会拉起我们的第三方应用,并将带有临时票据的信息返回给我们的第三方应用,当我们的应用拿到微信的临时票据时,我们就可以根据它的票据的code信息,再加上我们应用的appId与appSecret信息换取access_token。当然,为了用户帐号信息的保存,这个过程一般都是由我们的第三方应用的服务器完成的,我们只需要将我们的code传给我们的服务器,由服务器最终完成与微信平台的token换取。

接下来就是开始写代码了,首先我们需要下载微信的sdk包,在build.gradle中,添加下面一行代码:

dependencies {...compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'...}

sync,将会下载我们最新的sdk版本。如果下载失败我们也可以使用离线包,添加到app/lib目录中,并添加引用即可(由于前段时间jCenter下架了微信的sdk,导致开发的过程中发现不能直接使用,这时候可以考虑在lib中添加即可);

根据微信开发平台的官方要求,调起微信登录的处理逻辑必须放在我们应用的包名.wxapi目录下,否则会报错。这点可以参考微信提供的官方sdkDemo,https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN  在范例代码进行下载。不过这里下载的代码可能会因为编码的原因,导致汉语注释变成了混乱字符,后来将UTF-8编码改为GBK就OK了。

我们看一下代码的实现逻辑:

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {public static final String APP_ID = "xxxxxxxxxx";public static final String APP_SECRET = "xxxxxxxxxx";private static final String WEIXIN_SCOPE = "snsapi_userinfo";private static final String WEIXIN_STATE = "login_wx";private IWXAPI api;private SendAuth.Req req;private TextView loginWx;private User user;private String wxCode;@Overrideprotected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.login_wx);  loginWx = (TextView) findViewById(R.id.login_wx);  api = WXAPIFactory.createWXAPI(this, APP_ID, false);  api.reGISterApp(APP_ID);  try {    api.handleIntent(getIntent(), this);  } catch (NullPointerException e) {    e.printStackTrace();  }  initListener();}private void initListener() {  loginWx.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {      sendAuth();    }  });}private void sendAuth() {  req = new SendAuth.Req();  req.scope = WEIXIN_SCOPE;  req.state = WEIXIN_STATE;  api.sendReq(req);}@Overridepublic void onReq(BaseReq baseReq) {}@Overridepublic void onResp(BaseResp baseResp) {  int type = baseResp.getType();  if (type == 1) {    // 登录  SendAuth.Resp sendAuthResp = (SendAuth.Resp) baseResp;  wxCode = sendAuthResp.code;  String state = ((SendAuth.Resp) baseResp).state;  int errCode = baseResp.errCode;  Intent intent = new Intent(WXEntryActivity.this, HomeActivity.class);  intent.putExtra("login", "login");  intent.putExtra("wxCode", wxCode);  startActivity(intent);  YeeUtils.animOpenActivity(this);  finish();  } }  @Overridepublic void finish() {  super.finish();  YeeUtils.animCloseActivity(this);}@Overrideprotected void onDestroy() {  super.onDestroy();  api.unregisterApp();}}

要实现微信登录的功能,我们的代码就必须实现IWXAPIEventHandler接口,实现onReq()与onResp()接口,首先我们要在activity创建的时候需要进行一些初始化的操作,这个照写就是:

api = WXAPIFactory.createWXAPI(this, APP_ID, false);api.registerApp(APP_ID);try {  api.handleIntent(getIntent(), this);} catch (NullPointerException e) {  e.printStackTrace();}

当我们进行微信登录时,整个认证流程也就从sendAuth()开始了,当调起微信登录并确认后,这个时候微信sdk会调起我们的当前activity并触发onResp()回调,并传回code信息,这时候我们就可以将接下来的处理交给我们的服务器,由它完成对微信token的换取。

当然如果你想自己实现对微信token的获取以及接下来的操作,也是可以的,不过不建议这样使用,下面就是获取token的代码:

private void getResult(String code) {  String url = "https://api.weixin.qq.com/sns/oauth3/access_token?appid="      + APP_ID      + "&secret="      + APP_SECRET      + "&code="      + code      + "&grant_type=authorization_code";  JSONObjectRequest request = new jsonObjectRequest(Request.Method.POST, url, null, new SuccessResponse(), new ErrorListener());  StudyApplication.getInstance().newRequestQueue(this).add(request);}class SuccessResponse implements Response.Listener<JSONObject> {  @Override  public void onResponse(JSONObject response) {     if (null != response) {      String openid = null;      try {        openid = response.getString("openid")            .toString().trim();      String access_token = response          .getString("access_token").toString().trim();             SharePreferenceHelper.putValue(getApplicationContext(), "access_token", access_token);        getUID(openid, access_token);      }      catch (JSONException e) {        e.printStackTrace();      }    }  }}

通过这一步那么我们就拿到了用户的token信息,使用token我们就可以获取到用户信息,包括昵称,性别,头像,地址等信息,我们接下来看getUid()中的实现:

private void getUID(final String openId, final String accessToken) {  String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openId;  JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, null, new UIDSuccessResponse(), new ErrorListener());  StudyApplication.getInstance().newRequestQueue(this).add(request);  }class UIDSuccessResponse implements Response.Listener<JSONObject> {    @Override    public void onResponse(JSONObject response) {      if (response == null) {        return;      }      String nickname = null;      nickname = response.optString("nickname");      String uNIOnid = response.optString("unionid");      String headUrl = response.optString("headimgurl");      SharePreferenceHelper.putValue(getApplicationContext(), "nickname", nickname);      SharePreferenceHelper.putValue(getApplicationContext(), "photourl", headUrl);      SharePreferenceHelper.putValue(getApplicationContext(), "uin", unionid);      if (user == null) {        user = new User();      }      user.setUin(unionid);      user.setNickName(nickname);      user.setHeadImgUrl(headUrl);      ...    }  };

看完上述内容,你们掌握怎么在android中实现一个微信联合登录功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 怎么在android中实现一个微信联合登录功能

本文链接: https://www.lsjlt.com/news/220833.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在android中实现一个微信联合登录功能
    怎么在android中实现一个微信联合登录功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1):登录微信开放平台,完成账号申请:https://open.weixin.qq....
    99+
    2023-05-30
    android
  • Android怎么实现微信登录功能
    这篇文章主要讲解了“Android怎么实现微信登录功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现微信登录功能”吧!目录一、布局界面二、MainActivity.ja...
    99+
    2023-06-20
  • JS怎么实现一个微信录音功能
    今天小编给大家分享一下JS怎么实现一个微信录音功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。拆解需求根据原型图可以很容易...
    99+
    2023-07-05
  • android 仿微信demo——登录功能实现(服务端)
    目录服务端登录功能实现测试总结 上一篇文章实现了微信登录的移动端功能,下面继续完善功能,实现微信登录服务端功能 服务端登录功能实现 在以往文章里已经实现了服务端mvc框架,而登录和...
    99+
    2024-04-02
  • android 仿微信demo——登录功能实现(移动端)
    目录移动端登录功能实现测试移动端登录功能实现 登录功能基本和注册一样,唯一不同的是登录可以实现两种登录方式(微信号和手机号),也就是布局不一样。所以需要两个布局,两个activity...
    99+
    2024-04-02
  • SpringBoot整合微信登录功能的实现方案
    目录1. OAuth2解决什么问题?2. 微信扫描登录2.1 添加必要的依赖2.2 application.properties 添加配置2.3 登录请求2.4 前端1. OAuth...
    99+
    2024-04-02
  • 怎么在Android应用中实现一个实时通信功能
    今天就跟大家聊聊有关怎么在Android应用中实现一个实时通信功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实现原理就是将发送端,接收端分别放进一个线程去运行,然后利用线程通信类...
    99+
    2023-05-31
    android roi
  • 怎么在Android中使用Citypickerview实现一个三级联动功能
    本篇文章为大家展示了怎么在Android中使用Citypickerview实现一个三级联动功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  实现方法(1)添加依赖dependencie...
    99+
    2023-05-31
    android citypickerview 三级联动
  • 怎么在微信小程序中实现一个导航功能
    本篇文章给大家分享的是有关怎么在微信小程序中实现一个导航功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。操作步骤申请腾讯地图key——地址小程序后台添加腾讯插件——开发文档小...
    99+
    2023-06-08
  • Spring Boot怎么实现微信扫码登录功能
    本文小编为大家详细介绍“Spring Boot怎么实现微信扫码登录功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring Boot怎么实现微信扫码登录功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-06-30
  • Android中怎么实现微信支付功能
    Android中怎么实现微信支付功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 去微信开放平台申请微信支付服务,绑定自己的应用这里具体不多讲,但是一定要申请完成,将会得到是...
    99+
    2023-05-31
    android
  • 怎么在Android中实现一个摇一摇功能
    本篇文章给大家分享的是有关怎么在Android中实现一个摇一摇功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。步骤1:声明一个SensorManager对象步骤2:重写Act...
    99+
    2023-06-14
  • 微信小程序怎样实现登录功能
    这篇文章主要介绍了微信小程序怎样实现登录功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微信小程序登录一. 小程序不支持cookie会话 ...
    99+
    2024-04-02
  • Flutter中怎么实现一个微信朋友圈功能
    这篇文章给大家介绍Flutter中怎么实现一个微信朋友圈功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。import 'package:dio/dio.dart';import &...
    99+
    2023-06-20
  • 利用java实现一个微信小程序登录态维护功能
    利用java实现一个微信小程序登录态维护功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。作为服务端,如果想获得到使用微信小程序的会员信息,就需要小程序作为客户...
    99+
    2023-05-31
    微信小程序 ava java
  • 怎么使用PHP实现微信扫码登录功能
    这篇文章主要讲解了“怎么使用PHP实现微信扫码登录功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PHP实现微信扫码登录功能”吧!一、准备工作在开始实现微信扫码登录功能之前,我们需...
    99+
    2023-07-05
  • Android中怎么实现登录记住多个密码功能
    这篇文章将为大家详细讲解有关Android中怎么实现登录记住多个密码功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在popouWindow里面加上ListView,数据是把List以字符...
    99+
    2023-05-31
    android
  • 怎么在Android应用中实现一个截图与录屏功能
    这篇文章给大家介绍怎么在Android应用中实现一个截图与录屏功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。截屏:步骤如下:获取MediaProjectionManager通过MediaProjectionMana...
    99+
    2023-05-31
    android roi
  • 怎么在SpringBoot中利用Shiro实现一个密码登录功能
    怎么在SpringBoot中利用Shiro实现一个密码登录功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。导入依赖(pom.xml) <!--...
    99+
    2023-06-06
  • 怎么在React中利用Form组件实现一个登录功能
    本篇文章给大家分享的是有关怎么在React中利用Form组件实现一个登录功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。引入所需的 Antd 组件,代码如下所示:import...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作