关于使用微信登录第三方APP的实现(Android版)

关于使用微信登录第三方APP的实现(Android版),第1张

概述使用微信登录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{@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//注册APIapi = WXAPIFactory.createWXAPI(this, "APP_ID");api.handleIntent(getIntent(), this);}@Overridepublic void onResp(BaseResp resp) {if(resp instanceof SendAuth.Resp){SendAuth.Resp newResp = (SendAuth.Resp) resp;//获取微信传回的codeString 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中。

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

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

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

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

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

下面开始进入主题:

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

libammsdk.jar

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

API = WXAPIFactory.createWXAPI(this,"APP_ID",.registerapp("APP_ID"SendAuth.Req req = <span >new SendAuth.<span >Req();

<span >//<span >授权读取用户信息
req.scope = "snsAPI_userinfo"<span >;

<span >//<span >自定义信息
req.state = "wechat_sdk_demo_test"<span >;

<span >//<span >向微信发送请求
API.sendReq(req);

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

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

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

package 你的包名.<span >public
<span >class
WXEntryActivity <span >extends
Activity <span >implements<span > IWXAPIEventHandler{

@Overr<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>e</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;pub<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>c</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; vo<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a> onCreate(Bundle savedInstanceState) {    super</span>.<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;onCreate(savedInstanceState);    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;<a href="https://www.jb51.cc/tag/zhuce/" target="_blank" >注册</a><a href="https://m.jb51.cc/tag/API/" target="_blank" >API</a></span>    <a href="https://m.jb51.cc/tag/API/" target="_blank" >API</a> = WX<a href="https://m.jb51.cc/tag/API/" target="_blank" >API</a>Factory.createWX<a href="https://m.jb51.cc/tag/API/" target="_blank" >API</a>(this,"APP_<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>"<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;);    <a href="https://m.jb51.cc/tag/API/" target="_blank" >API</a></span>.handleIntent(getIntent(),<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; this);}@Overr<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>e</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;pub<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>c</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; vo<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a> onResp(BaseResp resp) {    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;if</span>(resp instanceof SendAuth.<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;Resp){        SendAuth</span>.Resp newResp = (SendAuth.<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;Resp) resp;        </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;<a href="https://www.jb51.cc/tag/huoqu/" target="_blank" >获取</a>微信传回的code</span>        <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;String</span> code = newResp.<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;code;    }}

}

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

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

得到下面的数据:

"access_token":"ACCESS_TOKEN","expires_in":7200,"refresh_token":"REFRESH_TOKEN","openID":"OPENID","scope":"ScopE","unionID":"o6_bmasdasdsad6_2sgVt7hMZOPfL"

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

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

可能的问题:

1、无法调起微信。

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

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

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

总结

以上是内存溢出为你收集整理的关于使用微信登录第三方APP的实现(Android版)全部内容,希望文章能够帮你解决关于使用微信登录第三方APP的实现(Android版)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1149758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存