• Android 开发 微信分享,登陆,获取信息


    1 获取appid和appsecret。
        
        https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN
        注册登录后,创建APP步骤执行。
        
    2 工程搭建

        2.1 (微信demo专用)
            2.1.1 设置debug.key,(Eclipse -> windows -> preferences -> android -> Build -> Custom debug keystore : WeChatSDK_sample_Android/debug.keystore).
            2.1.2 一定要更新Demo中的libammsdk.jar
        2.2 创建WXEntryActivity,必须在签名目录下的wxapi包创建,需要实现IWXAPIEventHandler接口。
        2.3 必须要加入api.handleIntent(getIntent(),this),否则无法接收回调事件;
        2.4 在Manifest中注册activity时,需要加上android:exported="true"和如下权限:
            <uses-permission android:name="android.permission.INTERNET" />
            <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        2.5 导入libammsdk.jar到libs
        2.6 将签名文件的哈希值注册到微信公共平台

    3 分享功能

        https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN
        有详细介绍各个类型的数据分享。
        
        这里需要说的是在WXEntryActivity的onResq(BaseResp resp)中,可以调用resp.getType()获取回调类型是分享(值为2)还是授权登录(值为1)。

    4 第三方登录
        4.1 打开授权界面
            SendAuth.Req req = new SendAuth.Req();
            req.scope = "snsapi_userinfo";
            req.state = "diandi_wx_login";
            api.sendReq(req);
        
    5 获取个人信息

        获取个人信息流程:code -> token/openid -> userinfo

        5.1 获取授权临时票据
        
            在4.2代码执行后,回调onResp(Resp resp)方法,而临时票据code就携带在resp对象的属性中:
            int code = ((SendAuth.Resp) resp).code;
        
        5.2 获取Token
        
            Token是根据code作为参数,使用GET的HTTP方式获取的,在response中,解析得到token和openid。
            https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
            
            Response:
            {
                "access_token":"ACCESS_TOKEN",
                "expires_in":7200,
                "refresh_token":"REFRESH_TOKEN",
                "openid":"OPENID",
                "scope":"SCOPE"
            }
            
        
        5.3 获取用户信息
        
            根据token和openid获取通过Http请求(GET方式),解析response得到用户信息。
            https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
            
            Response:
            {
                "openid":"OPENID",
                "nickname":"NICKNAME",
                "sex":1,//1为男性,2为女性
                "province":"PROVINCE",
                "city":"CITY",
                "country":"COUNTRY",
                //用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
                "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
                "privilege":[
                "PRIVILEGE1",
                "PRIVILEGE2"
                ],
                "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"

            }
      
    6 刷新登录状态

        所谓刷新登录状态,就是更新token。

        https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

        REFRESH_TOKEN就是在获取token的时候的refresh_token的值。      
           

  • 相关阅读:
    How to run Java main class and pass application arguments in Maven?
    【转】三年后再反思我的" Java Web项目管理得失谈"
    Object.keys()
    angular $resource 的 get请求 和 post请求
    vue 自定义 移动端筛选条件
    获取当前时间 YYYY-MM-DD
    vue-router 二级路由
    blob 对象 实现分片上传 及 显示进度条
    js性能优化之函数节流(分流函数)
    vue + vue-lazyload 实现图片懒加载
  • 原文地址:https://www.cnblogs.com/farmerkids/p/5803859.html
Copyright © 2020-2023  润新知