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云端服务器,由云端中转接口调用请求。

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

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

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

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

微信第三方登录(Android 实现)

1.开发准备工作1.参考Android 接入指南1.申请你的AppID 2.下载微信终端开发工具包 根据app包名生成ap2.代码实践1.判定客户端是否装有微信,没有则提醒需要安装微信 pri...

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

Android App实现第三方微信登录

Android App实现第三方微信登录

Android App实现第三方微信登录   Android App实现第三方微信登录   1、下载微信官方最新的sdk,集成到app中。如下图:    ...
  • xiacsd
  • xiacsd
  • 2016年07月15日 14:36
  • 9566

android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)

第一步:去对应的平台上注册app的相关信息,这一步,可参考我的另外一个篇,关于接入亲加通信云的文章     各个平台注册应用信息的地址如下:                新浪微博          ...

android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)

第一步:去对应的平台上注册app的相关信息,这一步,可参考我的另外一个篇,关于接入亲加通信云的文章     各个平台注册应用信息的地址如下:                新浪微博          ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Android 微信登录授权、微信分享

1.先去微信开放平台注册账号,然后创建应用,签名工具下载(在最下面),不细说。 创建成功得到appid和secret(注册到微信、获取参数什么的都会用到) 2.配置环境,添加依赖 dep...
  • yechaoa
  • yechaoa
  • 2017年11月07日 17:31
  • 142

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

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

Android微信登录以及分享集成步骤

Android微信登录以及分享集成步骤
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 手把手教你接微信登录功能
举报原因:
原因补充:

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