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

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

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

微信授权登陆接入第三方App(步骤总结)Android

微信授权登陆接入第三方App(步骤总结) 这几天开发要用到微信授权的功能,所以就研究了一下。可是微信开放平台接入指南里有几个地方写的不清不楚。在此总结一下,以便需要的人。 很多微信公众平台的应用如...
  • jolin678
  • jolin678
  • 2016年01月15日 15:34
  • 42689

微信登录和分享

微信的登录和分享功能的实现
  • violinlinlin
  • violinlinlin
  • 2016年05月16日 16:46
  • 3053

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

Android微信登录以及分享集成步骤
  • VRoymond
  • VRoymond
  • 2016年12月01日 16:07
  • 5153

微信登录

首先得获取kWeiXinAppSecret和kWeiXinAppId两个参数; 这两个参数都是在微信里面有体现的; 在项目中导入依赖库: 添加iOS9 URL Schemes. 添加URL...
  • IOSWEB
  • IOSWEB
  • 2016年07月21日 16:14
  • 2581

微信登陆 demo

  • 2015年03月06日 14:10
  • 3.15MB
  • 下载

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

Android App实现第三方微信登录
  • u013031725
  • u013031725
  • 2016年05月23日 16:58
  • 15260

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

最近在做一个APP项目,需要用到微信分享啊,登录这些。
  • u013066292
  • u013066292
  • 2015年11月07日 15:36
  • 9462

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

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

微信开放平台android接入笔记(unity3d)

最近接了下微信开放平台的sdk,总结下 首先,申请appId和appSecret这部分就不多讲了,上官网申请,审核通过就可以拿到了 然后就是下载sdk了,点击打开链接 有两个,一个旧的一个新的,一...
  • linxinfa
  • linxinfa
  • 2017年07月11日 20:47
  • 2494

Android调用微信登陆、分享、支付(第一版)

前言:用了微信sdk各种痛苦,感觉比qq sdk调用麻烦多了,回调过于麻烦,还必须要在制定包名下的actvity进行回调,所以我在这里写一篇博客,有这个需求的朋友可以借鉴一下,以后自己别的项目有用到也...
  • lowprofile_coding
  • lowprofile_coding
  • 2015年08月29日 14:20
  • 8740
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 手把手教你接微信登录功能
举报原因:
原因补充:

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