android 手把手教你接微信登录功能

原创 2017年01月03日 20:24:14

现在几乎每个app都接入了什么qq登录,微信登录,qq分享,微信分享等,我们也知道有三方的sdk已经帮我们做了这些,比如友盟,但是我项目中是后期产品要去加入微信登录功能的,上午说还想花半个小时写完,没想到,上午打开友盟统计,上周迭代的版本发现了很大的问题,只好排查问题,发现后台cdn缓存,刷新导致的,没办法,只好去做容错机制,下午配合运营和测试,一直在测,刚测试说可以了,其实后台也没测试出友盟那个bug,希望这次不要出问题了,不然就很尴尬了,还是快速的把这博客写完,还要赶最后一班公交车呢?


因为所做的项目主要是tv,微信登录是后期适配手机添加的功能,所以就没有使用友盟,而是直接接微信官网的,

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


为啥我还要自己写呢?因为我遇到了炕,所以在这记录并分享下

第一步:

导入libammsdk.jar

第二步:

在你所在的包下新建一个子包wxapi,比如你包名为com.niubi那么应该创建一个包为com.niubi.wxapi,然后在这个包下创建一个叫WXEntryActivity,这是类名是微信规定好的呢,如果你不按照它这么做的话,到时候第三步获取code,它不会走这个回调,拿不到请求的code值,这是我当初遇到的问题,就是没按照它的要求来.

第三步:

授权,因为你要使用微信登录功能,必须在微信平台上去申请点东西,哪它怎么知道你是已经在平台已经申请的用户嗯?这就是授权起的作用

api = WXAPIFactory.createWXAPI(WXEntryActivity.this, appId,true);
register(appId);
try {
    api.handleIntent(getIntent(), WXEntryActivity.this);
} catch (NullPointerException e) {
    e.printStackTrace();
}

public void register(String appId){
    api.registerApp(appId);
}
这个需要把你在平台上申请的appId,通过代码注册到平台上进行验证,

/**
 * 申请授权
 */
public void sendAuth() {
    final SendAuth.Req req = new SendAuth.Req();
    req.scope = "snsapi_userinfo";
    req.state = "wechat_sdk_appname";
    api.sendReq(req);
}
这个是真正的点击微信登录按钮去授权的,之前的都是初始化一些值,

回调

@Override
public void onReq(BaseReq baseReq) {
}
@Override
public void onResp(BaseResp baseResp) {
    int errCode = baseResp.errCode;
    if(errCode==0){
        String code = ((SendAuth.Resp) baseResp).code; //即为所需的code
        getResult(code);
    }
}
回调方法onResp()中去判断errCode是否返回0如果返回0就代表成功,返回其他code就去平台上查看对应的错误,

然后通过获取到的code去

第四步:

通过第三步获取到的code去获取acess_Token,我截图省点事:

appid 应用唯一标识,在微信开放平台提交应用审核通过后获得
secret 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
code 填写第一步获取的code参数
grant_type 填authorization_code

获取access_token后就可以获取用户信息了

第五步:

获取access_token后,进行接口调用,有以下前提:

  1. 1. access_token有效且未超时;

  2. 2. 微信用户已授权给第三方应用帐号相应接口作用域(scope)。

对于接口作用域(scope),能调用的接口有以下:

授权作用域(scope) 接口 接口说明
snsapi_base /sns/oauth2/access_token 通过code换取access_token、refresh_token和已授权scope
/sns/oauth2/refresh_token 刷新或续期access_token使用
/sns/auth 检查access_token有效性
snsapi_userinfo /sns/userinfo 获取用户个人信息

其中snsapi_base属于基础接口,若应用已拥有其它scope权限,则默认拥有snsapi_base的权限。使用snsapi_base可以让移动端网页授权绕过跳转授权登录页请求用户授权的动作,直接跳转第三方网页带上授权临时票据(code),但会使得用户已授权作用域(scope)仅为snsapi_base,从而导致无法获取到需要用户授权才允许获得的数据和基础功能。

这是来自官网平台的


我在项目中遇到的问题:

在app放在安智市场上发布时,审核没通过,报有病毒,后来发现其实是:申请的appId和appSecert放在了客户端导致的,后来我把这申请的appId和appSecert放在服务端,返回加密了下,就通过了审核!



这是微信平台给我们开发者的提示:

注意:

1、Appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取Appsecret);

2、access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token 后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;

3、refresh_token 为用户授权第三方应用的长效凭证,仅用于刷新access_token,但泄漏后相当于access_token 泄漏,风险同上。


建议将Appsecret、用户数据(如access_token)放在App云端服务器,由云端中转接口调用请求。

所以不要小看这个提示,我就栽倒一次!,下班,

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android:微信授权登录与微信分享全解析

前言在移动互联网浪潮中,联网APP已经把单机拍死在沙滩上,很多公司都希望自家应用能够有一套帐号系统,可是许多用户却并不一定买账:我凭啥注册你家应用的帐号?微博,微信,QQ几乎成了每个人手机中的必装应用...

集成微信第三方登录功能获取微信用户信息

最近公司要做微信的第三方登录,本来打算直接用第三方的框架就算了,就闲的想自己集成试试看。 然后发现被腾讯坑得不省人事。 前提,应用必须要在微信开发平台上注册,并且通过审核,有微信登录的权限...

Android之微信接入分享,登录功能。

最近在做一个APP项目,需要用到微信分享啊,登录这些。

Android微信第三方登录接入

微信开放平台地址:https://open.weixin.qq.com/ 一、首先注册微信开放平台账户,并创建应用,目前支持三种:Android、IOS、WP8        创建完应用后需要审核...

android集成第三方微信登录

项目需要用到第三方登录的微信数据,已调试好并集成到项目中,给大家分享一下。第一步:在微信开放平台创建安卓应用,需要输入的包名和签名就不用再提吧,不知道的自行百度。 应用创建完毕后会得到两个值:App...

android接入原生的支付宝支付(真的灰常简单,工具类)

首先把官方demo的payResult拷进代码工具中,然后添加官方jar包 public class AliPayUtils { private static final int SDK_...

Android第三方绑定微信登录详解

微信登录官方文档地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verif...

安卓 集成微信(一)实现微信登录详解

集成微信(一)实现微信登录详解 1.原理: 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数; 通过code参数...

android接入原生微信登录功能

我们在开发中通常是通过一个按钮来发起微信登录的 /** * 微信登录 */ private void setWXLogin() { IWXAPI a...

安卓第三方登录之微信登录(图文详解)

一、创建应用并成为开发者 1、创建应用 1)到微信开放平台管理中心,点击“创建移动应用” 2)填写基本的应用信息 3)填写平台信息 这里还是说一下怎么获取...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)