zoukankan      html  css  js  c++  java
  • Android Learning:微信第三方登录

    这两天,解决了微信第三方授权登录的问题,作为一个新手,想想也是一把辛酸泪。我想着,就把我的遇到的坑给大家分享一下,避免新手遇到我这样的问题能够顺利避开。

    步骤一 微信开发者平台

    我开始的解决思路是,去微信开发者平台看API文档。

    这个API文档的主要意思呢,有三点:

    1、你得下载这几样东西(下载链接),一个是他的范例代码,一个是他的签名生成工具。

    2、如果你自己的APP想要微信第三方授权,你得去申请一个APPID,这个APPID呢,就是微信给咱们APP分配的一个代号。当然微信不是免费给你服务,为了获得这个第三方授权的功能,你得给微信交300块钱。申请到这个授权之后,你需要填写一个应用包名,和一个应用签名

    应用包名

    应用签名

    使用签名生成工具,输入包名,查询到应用签名

    3、然后打开DEMO

    程序的入口WXEntryActivity是我们所最需要关注的 

        // 微信发送请求到第三方应用时,会回调到该方法
        @Override
        public void onReq(BaseReq req) {
            // TODO
        }
    

    当点击授权登陆的界面的时候,会自动调用这个onResp方法,所以我们可以在这里面取得所需要token。注意andorid里叫token,ios里面叫code,而不是因为sdk版本的问题,这是需要注意的。

        // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
        @Override
        public void onResp(BaseResp resp) {
            int result = 0;
            switch (resp.errCode) {
                case BaseResp.ErrCode.ERR_OK:
                    result = R.string.errcode_success;
                    /*获取token*/
                    SendAuth.Resp sendResp = (SendAuth.Resp) resp;
                    String code = sendResp.token;
                    Log.d("Tag", "code	" + code);
                    break;
                case BaseResp.ErrCode.ERR_USER_CANCEL:
                    result = R.string.errcode_cancel;
                    break;
                case BaseResp.ErrCode.ERR_AUTH_DENIED:
                    result = R.string.errcode_deny;
                    break;
                default:
                    result = R.string.errcode_unknown;
                    break;
            }
    

     APP_ID 替换为你的应用从官方网站申请到的合法appId

    public class Constants {
        // APP_ID 替换为你的应用从官方网站申请到的合法appId
        public static final String APP_ID = "wx77777";
    }
    
    // IWXAPI 是第三方app和微信通信的openapi接口
    private IWXAPI api;
    final SendAuth.Req req = new SendAuth.Req();
    req.scope = "snsapi_userinfo";
    req.state = "wechat_sdk_demo_test";
    //发送授权登陆请求
    api.sendReq(req);
    

    这一步就是和微信要code。执行了这一段代码之后。微信会调用刚才WXEntityActivity类里面的onResp()方法。并且把code返回来了。见上面那一段代码。获取到code之后就可以通过code获取access_token了。 

    请求以下链接获取access_token:

    https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

    这步和微信通信获得access_token就是普通的访问链接。 用httpClient就行了,而不是接入指南里说的那个和微信通信的方法onReq().然后还是这样的方式通过access_token.就可以调用接口获得用户基本信息了。具体返回参数什么的接入指南里面说的很清楚。至此微信授权基本是成功了。

    这里,我们要添加Custom debug keystore。上面的那个debug keystore不会和微信通信。

    而我们添加的这个keystore 也要符合一些规范所以要改一改。

    不过在开发的过程中要注意一下debug keystore。

    步骤二 Android studio如何生成keystore文件

    第一步 创建签名文件

    第二步 填写签名参数

    第三步 选择构建类型

    第四步 查看生成第apk文件

    步骤三 Android studio如何定位keystore文件

    在运行微信分享Demo及新浪微博分享Demo时,需要修改使用Demo中的debug.keystore才能运行授权及和分享

    在进行Android开发中,所用到的工具,就Eclispse和Android Studio比较多。其中,使用Eclipse里修改debug.keystore的方式新浪微博文档有介绍,在Eclipse里点击"Windows-->Preferences-->Android-->Build",在右边的"Custom debug keystore"选择Demo中的debug.keystore即可。

    在Android Studio中的做法是"Project Structure"中“Modules”中的应用的模块。然后选择"Signing",点击"+"号,起名为“debug”,并在“Store File”里选择Demo中的debug.keystore,如下图

    然后在选择“Build Types”在“debug”中的"Signing Config"选择上面配置的"debug",如下图

    点击“OK”,重新编译就可以了。

    通过上面配置完后,会自动在项目模块中的build.gradle里的android {}里生成

    signingConfigs {
        debug {
            storeFile file('.keystore里文件路径')
        }
    }

    以及在buildTypes里生成

    debug {
        signingConfig signingConfigs.debug
    }

    当然啦,可以不用界面配置,直接在build.gradle里写上面的配置也都OK的

    步骤四 获取签名 填写到微信开发者平台

    接下来将定位到jks文件的工程烧写到程序中,然后将签名工具的MD码填写到微信开发者平台,就能调用第三方授权登陆了。

     

    效果图  

      

    参考链接:

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

    Android Studio修改debug.keystore

    Android Studio 签名打包过程图解

     

  • 相关阅读:
    【RocketMQ之介绍】
    1. JVM体系结构概述
    技术贴
    http协议
    如何在2个小时之内掌握48个国际音标?
    托业全真高频词汇(一)
    三. 托业单词之业务拓展 Business Development
    二、托业单词之人事及管理 Personnel & Management
    一、托业单词之办公室事宜 Office matters
    VUE 之让数字四舍五入
  • 原文地址:https://www.cnblogs.com/danbing/p/5215189.html
Copyright © 2011-2022 走看看