当前位置: 移动技术网 > 移动技术>移动开发>Android > Android实现使用微信登录第三方APP的方法

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

2019年07月24日  | 移动技术网移动技术  | 我要评论

本文实例讲述了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功能与权限描述大全:

更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android数据库操作技巧总结》、《android编程之activity操作技巧总结》、《android文件操作技巧汇总》、《android编程开发之sd卡操作方法汇总》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网