博客
关于我
PHP三方登录,移动端与服务端交互
阅读量:792 次
发布时间:2023-02-28

本文共 2050 字,大约阅读时间需要 6 分钟。

移动端(android)三方登录流程说明

一、移动端授权流程

在友盟对各平台封装的基础上,再次封装,直接通过回调获取第三方平台的token、openid、unionid、nickname等信息。该流程主要包含以下步骤:

  • 用户点击授权:通过友盟一键授权,获取到第三方平台的token。
  • 获取个人信息:利用获取到的token,向第三方平台请求获取openid、unionid、nickname等用户信息。
  • // 示例:其他平台的登录处理
    loginByWeixin(this, new AuthCallback
    () {
    @Override
    void onComplete(int var2, WeixinInfo info) {
    UmengUtil.loginBySina(this, new AuthCallback
    () {
    @Override
    void onComplete(int var2, SinaInfo info) {
    Log.e("dd", info.toString());
    }
    @Override
    void onError(int var2, Throwable var3) {}
    @Override
    void onCancel(int var2) {}
    });
    }
    @Override
    void onError(int var2, Throwable var3) {}
    @Override
    void onCancel(int var2) {}
    });

    二、服务端验证流程

    服务端接收到token、openid等关键信息后,需执行以下步骤:

  • 信息核对校验

    • 调用第三方平台的API,验证token的有效性。
    • 比较客户端传来的openid与服务端获取到的openid是否一致。
  • 账户处理

    • 根据第三方平台的openid或unionid,在数据库中查询是否存在对应账户。
    • 如果没有账户,生成新账户并进行系统注册绑定。
    • 如果已有账户,无需生成新账户。
  • 返回个人信息

    • 将账户的个人信息取出,返回给客户端完成登录。
  • 三、信息校验规则

  • 一般规则

    • 服务端需根据客户端传递的token,向第三方平台请求openid。
    • 与客户端传递的openid进行比对,若一致则视为验证通过。
  • 特殊规则

    • Sina:查询用户access_token的授权信息,包括授权时间、过期时间和scope权限。

      • 请求参数:access_token
      • 返回数据示例:
        {
        "uid": 1073880650,
        "appkey": 1352222456,
        "scope": null,
        "create_at": 1352267591,
        "expire_in": 157679471
        }
    • Weixin

      • 唯一标识为unionid,需通过token和openid获取unionid进行比对。
      • 请求方式:GET
      • 返回示例:
        {
        "subscribe": 1,
        "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
        "nickname": "Band",
        "sex": 1,
        "language": "zh_CN",
        "city": "广州",
        "province": "广东",
        "country": "中国",
        "headimgurl": "[http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0]",
        "subscribe_time": 1382694957,
        "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL",
        "remark": "",
        "groupid": 0
        }
    • QQ

      • 请求地址:PC网站、WAP网站
      • 请求参数:access_token
      • 返回示例:
        {
        "client_id": "YOUR_APPID",
        "openid": "YOUR_OPENID"
        }
      • 注意:解析openid时需去掉外层括号。
  • 四、后续操作

    完成第三方平台认证后,按照系统注册绑定流程处理,参考:https://www.jianshu.com/p/5add98492ce5

    转载地址:http://kbtfk.baihongyu.com/

    你可能感兴趣的文章
    PHP7 新特性
    查看>>
    PHP7+MySQL5.7+Nginx1.9. on Ubuntu 14.0
    查看>>
    php7.1.6 + redis
    查看>>
    php7中使用php_memcache扩展
    查看>>
    PHP7中十个需要避免的坑
    查看>>
    php7和PHP5对比的新特性和性能优化
    查看>>
    PHP7安装pdo_mysql扩展
    查看>>
    PHP7实战开发简单CMS内容管理系统(7) 后台登录架构 用户登录校验
    查看>>
    php7,从phpExcel升级到PhpSpreadsheet
    查看>>
    PHP8.1 + ThinkPHP实战指南:高效构建现代化网站的六大技巧
    查看>>
    PHP8中match新语句的操作方法
    查看>>
    PHP:第一章——PHP中常量和预定义常量
    查看>>
    PHP:第一章——PHP中的位运算
    查看>>
    phpcms
    查看>>
    phpcms 2008 product.php pagesize参数代码注射漏洞
    查看>>
    phpcms V9 自定义添加 全局变量{DIY_PATH}方法
    查看>>
    Redis五种核心数据结构的基本使用与应用场景
    查看>>
    Redis五种数据结构简介
    查看>>
    PHPCMS多文件上传和上传数量限制
    查看>>
    phpEnv的PHP集成环境
    查看>>