Android实现使用微信登录第三方APP的方法

作者:陈达辉 时间:2021-06-09 00:05:02 

本文实例讲述了Android实现使用微信登录第三方APP的方法。分享给大家供大家参考,具体如下:

使用微信登录APP,免去注册过程,现在已经有很多的类似应用了。集成该功能过程不复杂,但还是有一些地方需要注意的。

开始之前,需要做下面的准备工作。

1、到微信开放平台注册你的APP,并申请开通微信登录的权限。参考这里:

https://open.weixin.qq.com//

2、下载Android SDK和签名查看工具,请参考:

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN/

3、获取到APP的签名,并填写到微信开放平台。

下面开始进入主题:

引入微信登录相关SDK到项目的lib文件夹中,就一个文件:

libammsdk.jar

调用微信,申请用户授权:


//api注册
api = WXAPIFactory.createWXAPI(this, "APP_ID", true);
api.registerApp("APP_ID");
SendAuth.Req req = new SendAuth.Req();
//授权读取用户信息
req.scope = "snsapi_userinfo";
//自定义信息
req.state = "wechat_sdk_demo_test";
//向微信发送请求
api.sendReq(req);

将APP_ID替换成你在微信开放平台申请到的,上面的代码就可以调起微信了。

授权成功后,微信会返回一个code,下面介绍如何接收微信回传的信息。

在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity.java文件,输入类似下面的代码:

package 你的包名.wxapi;


public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
 @Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   //注册API
   api = WXAPIFactory.createWXAPI(this, "APP_ID");
   api.handleIntent(getIntent(), this);
 }
 @Override
 public void onResp(BaseResp resp) {
   if(resp instanceof SendAuth.Resp){
     SendAuth.Resp newResp = (SendAuth.Resp) resp;
     //获取微信传回的code
     String code = newResp.code;
   }
 }
}

在AndroidManifest.xml中加入下面的代码:

<activity android:exported="true" android:launchMode="singleTop" android:name=".wxapi.WXEntryActivity" android:theme="@android:style/Theme.NoDisplay" />

修复WXEntryActivity中的错误,在onResp方法中获取到code,然后通过下面的接口获取到token和openid:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

得到下面的数据:


{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

openid可以作为用户的唯一标识,将openid保存下来,就可以实现登录状态的检查了。

如果需要获取用户的信息,例如昵称,头像,可以使用下面的接口:

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

得到的数据为:


{
"openid":"OPENID",
"nickname":"NICKNAME",
"sex":1,
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"privilege":[
"PRIVILEGE1",
"PRIVILEGE2"
],
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

更多的接口使用,请参考:

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317853&lang=zh_CN

可能的问题:

1、无法调起微信。

可能的原因是签名错误,请检查签名。

2、无法接受到微信回传的信息

可能的原因是没有把WXEntryActivity加入到AndroidManifest.xml中。

PS:关于AndroidManifest.xml文件相关属性功能可参考本站在线工具:

Android Manifest功能与权限描述大全:
http://tools.jb51.net/table/AndroidManifest

希望本文所述对大家Android程序设计有所帮助。

标签:Android,微信,APP
0
投稿

猜你喜欢

  • java~springboot~ibatis数组in查询的实现方法

    2023-03-31 21:31:13
  • Spring Boot实现数据访问计数器方案详解

    2022-12-17 08:40:16
  • c#调用qq邮箱smtp发送邮件修改版代码分享

    2023-04-03 11:11:31
  • android实现扫码枪功能

    2022-08-28 21:33:35
  • 浅析Android手机卫士之抖动输入框和手机震动

    2022-11-23 08:01:50
  • C# Winform 实现控件自适应父容器大小的示例代码

    2021-06-15 20:00:52
  • C#入门教程之ListBox控件使用方法

    2023-09-20 04:52:59
  • c#(Socket)异步套接字代码示例

    2021-06-28 11:06:03
  • Java中的synchronized 优化方法之锁膨胀机制

    2023-10-02 03:44:15
  • JAVA文件扫描(递归)的实例代码

    2022-04-08 08:37:20
  • Android自定义ProgressDialog加载图片

    2022-07-28 22:08:39
  • C++超详细讲解贪心策略的设计及解决会场安排问题

    2022-07-26 12:08:04
  • 如何使用lamda表达式对list进行求和

    2022-08-24 09:20:09
  • Java实现读取resources目录下的文件路径的九种方式

    2023-11-23 11:47:02
  • Java 8中Stream API的这些奇技淫巧!你Get了吗?

    2023-04-20 20:31:44
  • SpringBoot整合OpenCV的实现示例

    2022-09-07 03:53:19
  • Unity3D实现扭动挤压浏览效果

    2022-04-23 22:23:16
  • Android View背景选择器编写技巧

    2023-09-16 21:37:43
  • Java Validation Api使用方法实例解析

    2023-05-16 05:44:58
  • android 开发教程之日历项目实践(二)

    2022-05-05 22:22:13
  • asp之家 软件编程 m.aspxhome.com