精华内容
参与话题
问答
  • 第三方登录

    2019-04-11 19:32:45
    第三方登录,我的理解就是基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能。遵循一个Oauth2.0国际通用协议,允许用户在不提供用户名和密码的情况下,让第三方应用访问一些资源。使用...

    自己的登录:用户名、密码和验证码、密码用md5加密;
    第三方登录,我的理解就是基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能。遵循一个Oauth2.0国际通用协议,允许用户在不提供用户名和密码的情况下,让第三方应用访问一些资源。使用第三方登录时,我们不需要用户再次输入用户名和密码,而是直接通过一个唯一openid来进行授权登录。对于普通用户来说,如果能用QQ、微信、百度、新浪这些平台的账号一键注册登录各个平台,无疑会方便很多。对于我们的应用来说,通过授权,借助QQ、微信这些用户量比较大的第三方平台增强自己的知名度也非常划算。

    我们的平台集成了QQ、微信、百度、新浪四种第三方登录方式,实现的方式都是类似的。首先去各大开放平台进行注册成为开发者,并创建应用,填写回调地址,获取appid(应用唯一的识别标志)、appkey(给应用分配的密钥),(名称可能不一样);下载api文档和sdk开发工具包;就可以开始开发了。

    首先在我们网站的登录页面根据api集成第三方登录的logo图标,并给与点击事件,当用户点击此图标时,发送请求,直接跳转到第三方平台的登录页面,第三方平台也会自动检测电脑是否有已登录的账号。登录成功以后,第三方平台会自动调用我们传递的回调地址,并传递回一个code参数;我们拿到code以后,再次调用第三方api提供的接口,传入code、app_id、appkey等参数,调用获取access_token的接口(接口调用,有第三方提供的sdk包,直接导入jar包,根据api文档,传递参数调用方法就可以,我们没必要太过关心第三方平台是用webservic接口或httpclient接口。)。获取到access_token同时,会获取到openid,拿到openid以后,就相当于拿到了登录授权。用openid去自己的用户表中查找是否与对应的用户,如果有,就直接查出用户信息,创建自己的session就可以了。如果没有,则新创建一个用户,把openid放进去。如果还需要其他信息,可以通过openid再次调用第三方平台的接口获取用户信息,如果用户信息还是不够,可以创建完用户以后再次跳转一个页面,让用户不全信息。信息补全以后,创建session,完成登录。这样一个第三方登录就完成了。

    展开全文
  • 今天我们来学习:码云(Gitee)授权第三方登录,相比之前 支付宝登录、腾讯QQ登录 以及 新浪微博登录 来说,相对于比较简单 一、准备工作 1、登录 码云官网 官网地址:https://gitee.com/ 注册、登录我们的...

    今天我们来学习:码云(Gitee)授权第三方登录,相比之前 支付宝登录腾讯QQ登录 以及 新浪微博登录 来说,相对于比较简单

    一、准备工作

    官网地址:https://gitee.com/
    

    注册、登录我们的账号

    • 2、创建应用
      设置
      在右上角菜单找到 “设置” 选项
      第三方应用
      在 “安全设置” 下找到 “第三方应用”
      我的应用
      点击 “创建应用” 开始创建第三方应用
      创建应用信息
      按照要求填写应用信息即可
      应用详情
    • 3、将应用信息保存到项目中
      应用配置信息
      由于我使用的是 SpringBoot 项目,我放在了 application.yml 文件中

    二、开始开发

    • 1、引入 Maven 依赖
    <!-- 网络请求 -->
    <dependency>
    	<groupId>org.apache.httpcomponents</groupId>
    	<artifactId>httpclient</artifactId>
    	<version>4.5.6</version>
    </dependency>
    <!-- alibaba的fastjson -->
    <dependency>
    	<groupId>com.alibaba</groupId>
    	<artifactId>fastjson</artifactId>
    	<version>1.2.51</version>
    </dependency>
    

    其余的依赖请自行加入

    • 2、在页面放置 “码云(Gitee)” 授权登录的 DOM 元素
    <a th:href="@{gitee/auth}" class="link" title="Gitee登录"><i class="iconfont icon-gitee"></i></a>
    

    这里使用的是阿里的 iconfont 图标

    三、接口类

    创建 “码云(Gitee)” 授权登录的 Controller,GiteeController.java

    • 1、从配置文件中获取 “码云(Gitee)” 配置信息
    /**
     * gitee授权中提供的 appid 和 appkey
     */
    @Value("${gitee.oauth.clientid}")
    public String CLIENTID;
    @Value("${gitee.oauth.clientsecret}")
    public String CLIENTSECRET;
    @Value("${gitee.oauth.callback}")
    public String URL;
    
    • 2、页面登录按钮点击后的接口
    /**
     * 请求授权页面
     */
    @GetMapping(value = "/auth")
    public String qqAuth(HttpSession session) {
        // 用于第三方应用防止CSRF攻击
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        session.setAttribute("state", uuid);
    
        // Step1:获取Authorization Code
        String url = "https://gitee.com/oauth/authorize?response_type=code" +
                "&client_id=" + CLIENTID +
                "&redirect_uri=" + URLEncoder.encode(URL) +
                "&state=" + uuid +
                "&scope=user_info";
    
        return PasswordUtils.redirectTo(url);
    }
    

    接口文档中建议我们在授权登录时传入一个加密的数据防止被攻击,我们传入了UUID,最后重定向到授权页面
    授权页面

    • 3、当该用户点击“授权”按钮,同意授权后,就会回调到我们在应用中填写的回调地址里去
    /**
     * 授权回调
     */
    @GetMapping(value = "/callback")
    public String qqCallback(HttpServletRequest request) throws Exception {
        HttpSession session = request.getSession();
        // 得到Authorization Code
        String code = request.getParameter("code");
        // 我们放在地址中的状态码
        String state = request.getParameter("state");
        String uuid = (String) session.getAttribute("state");
    
        // 验证信息我们发送的状态码
        if (null != uuid) {
            // 状态码不正确,直接返回登录页面
            if (!uuid.equals(state)) {
                return PasswordUtils.redirectTo("/login");
            }
        }
    
        // Step2:通过Authorization Code获取Access Token
        String url = "https://gitee.com/oauth/token?grant_type=authorization_code" +
                "&client_id=" + CLIENTID +
                "&client_secret=" + CLIENTSECRET +
                "&code=" + code +
                "&redirect_uri=" + URL;
        JSONObject accessTokenJson = GiteeHttpClient.getAccessToken(url);
    
        // Step3: 获取用户信息
        url = "https://gitee.com/api/v5/user?access_token=" + accessTokenJson.get("access_token");
        JSONObject jsonObject = GiteeHttpClient.getUserInfo(url);
        /**
         * 获取到用户信息之后,就该写你自己的业务逻辑了
         */
        return PasswordUtils.redirectTo("/success");
    }
    

    四、网络请求方法

    上面回调方法中所用到的网络接口方法,我放在了 GiteeHttpClient.java 文件中,主要有两个方法

    • 1、网络接口
    /**
     * 获取Access Token
     * post
     */
    public static JSONObject getAccessToken(String url) throws IOException {
        HttpClient client = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36");
        HttpResponse response = client.execute(httpPost);
        HttpEntity entity = response.getEntity();
        if (null != entity) {
            String result = EntityUtils.toString(entity, "UTF-8");
            return JSONObject.parseObject(result);
        }
        httpPost.releaseConnection();
        return null;
    }
    
    /**
     * 获取用户信息
     * get
     */
    public static JSONObject getUserInfo(String url) throws IOException {
        JSONObject jsonObject = null;
        CloseableHttpClient client = HttpClients.createDefault();
    
        HttpGet httpGet = new HttpGet(url);
        httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36");
        HttpResponse response = client.execute(httpGet);
        HttpEntity entity = response.getEntity();
    
        if (entity != null) {
            String result = EntityUtils.toString(entity, "UTF-8");
            jsonObject = JSONObject.parseObject(result);
        }
    
        httpGet.releaseConnection();
    
        return jsonObject;
    }
    

    分别就是使用 code 获取 token,在使用 token 获取 用户信息

    注意:我们需要在请求时加上请求头

    User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
    

    最终我们获取到一个 JSON 对象,该对象包含了用户的信息,例如:id,name,email,phone 等等。

    https://gitee.com/api/v5/oauth_doc#/
    

    五、总结

    该授权认证过程符合 OAuth2 认证基本流程,流程如下:
    授权过程

    1、用户点击页面登录按钮,请求授权页面,用户在此页面登录账号并同意授权
    2、用户同意授权后,回调至我们项目中,首先验证 state 是否一致
    3、使用上一步拿到的 code 请求 access_token
    4、使用 access_token 请求 用户信息,完成授权登录过程

    下一篇:

    【第三方互联】十四、Github授权第三方登录

    如您在阅读中发现不足,欢迎留言!!!

    展开全文
  • 我们创建了支付宝开放平台的网页&移动应用,审核通过后,我们需要拿到appid,支付宝公钥,私钥进项开发 一、添加应用信息至项目环境中 我们保存了 appid、应用私钥、支付宝公钥、支付宝回调地址等信息,这里...

    我们创建了支付宝开放平台的网页&移动应用,审核通过后,我们需要拿到appid,支付宝公钥,私钥进行开发

    一、应用信息

    添加应用信息至项目环境中
    配置信息
    我们保存了 appid、应用私钥、支付宝公钥、支付宝回调地址等信息,这里的公钥为支付宝开放平台为我们生成的“支付宝公钥

    二、引入 Maven 依赖

    <!-- 支付宝SDK -->
    <dependency>
    	<groupId>com.alipay.sdk</groupId>
    	<artifactId>alipay-sdk-java</artifactId>
    	<version>4.9.28.ALL</version>
    </dependency>
    <!-- alibaba的fastjson -->
    <dependency>
    	<groupId>com.alibaba</groupId>
    	<artifactId>fastjson</artifactId>
    	<version>1.2.51</version>
    </dependency>
    

    其余依赖请自行添加

    三、登录按钮

    在页面放置 “支付宝” 授权登录的 DOM 元素

    <a th:href="@{alipay/auth}" class="link" title="支付宝登录"><i class="iconfont icon-zhifubao"></i></a>
    
    

    这里使用的是阿里的 iconfont 图标

    四、接口类

    创建 “支付宝” 授权登录的 Controller,AlipayController.java

    1、从配置文件中获取 “支付宝” 配置信息

    /**
     * 微博授权中提供的 appid 和 appkey
     */
    @Value("${alipay.oauth.appid}")
    public String APPID;
    @Value("${alipay.oauth.callback-url}")
    public String CALL_BACK_URL;
    @Value("${alipay.oauth.private-key}")
    public String PRIVATE_KEY;
    @Value("${alipay.oauth.public-key}")
    public String PUBLIC_KEY;
    

    2、登录按钮点击后的接口

    /**
     * 请求授权页面
     */
    @GetMapping(value = "/auth")
    public String qqAuth(HttpSession session) {
        // 用于第三方应用防止CSRF攻击
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        session.setAttribute("state", uuid);
    
        // Step1:获取Authorization Code
        String url = "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?scope=auth_user" +
                "&app_id=" + APPID +
                "&redirect_uri=" + URLEncoder.encode(CALL_BACK_URL) +
                "&state=" + uuid;
    
        return PasswordUtils.redirectTo(url);
    }
    

    接口文档中建议我们在授权登录时传入一个加密的数据防止被攻击,我们传入了UUID,最后重定向到授权页面
    授权界面
    3、当该用户点击“授权”按钮,同意授权后,就会回调到我们在应用中填写的回调地址里去

    /**
     * 授权回调
     */
    @GetMapping(value = "/callback")
    public String qqCallback(HttpServletRequest request) throws Exception {
        // 获取session
        HttpSession session = request.getSession();
        // 得到auth_code
        String authCode = request.getParameter("auth_code");
        // 我们放在地址中的状态码
        String state = request.getParameter("state");
        String uuid = (String) session.getAttribute("state");
        // 验证信息我们发送的状态码
        if (null != uuid) {
            // 状态码不正确,直接返回登录页面
            if (!uuid.equals(state)) {
                return PasswordUtils.redirectTo("/login");
            }
        }
    
        // Step2:通过auth_code获取Access Token 以及 user_id
        JSONObject tokenJson = AlipayHttpClient.getAccessToken(APPID, PRIVATE_KEY, PUBLIC_KEY, authCode);
        // Step3:通过auth_code获取用户信息
        JSONObject userJson = AlipayHttpClient.getUserInfo(APPID, PRIVATE_KEY, PUBLIC_KEY, tokenJson.getString("accessToken"));
       	/**
         * 获取到用户信息之后,就该写你自己的业务逻辑了
         */
        return PasswordUtils.redirectTo("/success");
    }
    

    以上代码,从我自己的项目中拷贝而来,如果你直接使用,你需要对其业务代码进行修改

    五、网络请求方法

    第四步代码中所用到的网络接口方法,我放在了 AlipayHttpClient.java 文件中,主要有两个方法

    /**
     * auth_code换取access_token与user_id
     *
     * @param appid
     * @param privateKey 私钥
     * @param publicKey  公钥
     * @param authCode   授权码
     * @return
     * @throws AlipayApiException
     */
    public static JSONObject getAccessToken(String appid, String privateKey, String publicKey, String authCode) throws AlipayApiException {
        // 返回对象
        JSONObject res = new JSONObject();
        /**
         * 支付宝网关(固定)
         * APPID 即创建应用后生成
         * 开发者私钥,由开发者自己生成
         * 参数返回格式,只支持json
         * 编码集,支持GBK/UTF-8
         * 支付宝公钥,由支付宝生成
         * 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
         */
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", appid, privateKey, "json", "UTF-8", publicKey, "RSA2");
        // 请求对象
        AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
        // 第一步获取到的:auth_code
        request.setCode(authCode);
        // 授权类型
        request.setGrantType("authorization_code");
        // 发起请求
        AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);
        // 拿到 access_token
        res.put("accessToken", oauthTokenResponse.getAccessToken());
        // 拿到 user_id
        res.put("userId", oauthTokenResponse.getUserId());
        return res;
    }
    
    /**
     * 使用 access_token 获取用户信息
     *
     * @param appid
     * @param privateKey  私钥
     * @param publicKey   公钥
     * @param accessToken 令牌
     * @throws AlipayApiException
     */
    public static JSONObject getUserInfo(String appid, String privateKey, String publicKey, String accessToken) throws AlipayApiException {
        // 返回对象
        JSONObject res = new JSONObject();
        /**
         * 支付宝网关(固定)
         * APPID 即创建应用后生成
         * 开发者私钥,由开发者自己生成
         * 参数返回格式,只支持json
         * 编码集,支持GBK/UTF-8
         * 支付宝公钥,由支付宝生成
         */
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", appid, privateKey, "json", "UTF-8", publicKey, "RSA2");
        // 请求对象
        AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
        // 传入token,发起请求
        AlipayUserInfoShareResponse response = alipayClient.execute(request, accessToken);
        // 请求成功
        if ("10000".equals(response.getCode())) {
            res.put("code", 1);
            res.put("user", response);
        }
        // 请求失败
        else {
            res.put("code", 0);
            res.put("msg", "获取用户信息失败");
        }
        return res;
    }
    

    最终我们获取到用户的信息是一个 AlipayUserInfoShareResponse 对象,该对象包含了该用户的所有信息,建议观看源代码

    以上,就是完成 “支付宝” 授权登录的过程,相比起腾讯QQ新浪微博的第三方授权登录,支付宝需要用到接口加签的操作,但我们使用支付宝平台提供的工具也很容易

    六、总结

    授权登录总结
    如您在阅读中发现不足,欢迎留言!!!

    下一篇:

    【第三方互联】十三、码云(Gitee)授权第三方登录

    展开全文
  • 【第三方互联】三、腾讯QQ授权第三方登录

    万次阅读 多人点赞 2020-02-25 15:24:15
    当我们创建的 QQ 互联应用成功后,我们便可以开始使用该应用来实现 QQ 互联 一、获取 APP ID 和 APP Key 1、找到我的应用 ... 这样,我们就获取到了 APP ID 和 APP Key ...1、将 APP ID 、APP Key,以及该应用的信息放...

    当我们创建的 QQ 互联应用成功后,我们便可以开始使用该应用来实现 QQ 互联

    一、获取 APP ID 和 APP Key

    1、在 QQ 互联官网首页找到“我的应用”
    我的应用
    2、点击应用,进入详情
    获取appid和appkey
    这样,我们就获取到了 APP ID 和 APP Key

    二、QQ 授权登录进行开发

    1、将 APP ID 、APP Key,以及该应用的信息放入项目中的配置文件中,我使用的是SpringBoot,我放在了 application.yml 配置文件中
    qq互联信息

    • 二、添加 Maven 依赖,在 pom.xml 文件中,我们需要加入以下依赖信息
    <!-- 网络请求 -->
    <dependency>
    	<groupId>org.apache.httpcomponents</groupId>
    	<artifactId>httpclient</artifactId>
    	<version>4.5.6</version>
    </dependency>
    

    其他依赖,请自行加入

    三、登录按钮

    在页面放置 QQ 授权登录的 DOM 元素

    <a th:href="@{qq/auth}" class="link" title="腾讯QQ登录"><i class="layui-icon">&#xe676;</i></a>
    

    四、接口类

    创建 QQ 授权登录的 Controller,QqController.java

    1、从配置文件中获取 QQ 互联信息

    /**
         * QQ互联中提供的 appid 和 appkey
         */
        @Value("${qq.oauth.appid}")
        public String APPID;
        @Value("${qq.oauth.appkey}")
        public String APPKEY;
        @Value("${qq.oauth.url}")
        public String URL;
    

    定义三个变量,接收 QQ 互联的信息

    2、登录按钮点击后的接口

    /**
         * 请求授权页面
         */
        @GetMapping(value = "/auth")
        public String qqAuth(HttpSession session) {
            // 用于第三方应用防止CSRF攻击
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            session.setAttribute("state", uuid);
    
            // Step1:获取Authorization Code
            String url = "https://graph.qq.com/oauth2.0/authorize?response_type=code" +
                    "&client_id=" + APPID +
                    "&redirect_uri=" + URLEncoder.encode(URL) +
                    "&state=" + uuid;
    
            return PasswordUtils.redirectTo(url);
        }
    

    QQ 互联的接口文档中建议我们在授权登录时传入一个加密的数据防止被攻击,我们传入了UUID,最后重定向到授权页面
    QQ授权页面

    3、我们在授权页面,登录了 QQ 账号,并同意授权后,就回到了我们创建应用是设置的回调地址里面了

    /**
         * 授权回调
         */
        @GetMapping(value = "/callback")
        public String qqCallback(HttpServletRequest request) throws Exception {
            HttpSession session = request.getSession();
            // 得到Authorization Code
            String code = request.getParameter("code");
            // 我们放在地址中的状态码
            String state = request.getParameter("state");
            // 验证信息
            String uuid = (String) session.getAttribute("state");
    
            // 验证信息我们发送的状态码
            if (null != uuid) {
                // 状态码不正确,直接返回登录页面
                if (!uuid.equals(state)) {
                    return PasswordUtils.redirectTo("/login");
                }
            }
    
            // Step2:通过Authorization Code获取Access Token
            String url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code" +
                    "&client_id=" + APPID +
                    "&client_secret=" + APPKEY +
                    "&code=" + code +
                    "&redirect_uri=" + URL;
            String access_token = QqHttpClient.getAccessToken(url);
    
            // Step3: 获取回调后的openID
            url = "https://graph.qq.com/oauth2.0/me?access_token=" + access_token;
            String openId = QqHttpClient.getOpenID(url);
    
            // Step4:获取QQ用户信息
            url = "https://graph.qq.com/user/get_user_info?access_token=" + access_token +
                    "&oauth_consumer_key=" + APPID +
                    "&openid=" + openId;
    
            // 得到用户信息
            JSONObject jsonObject = QqHttpClient.getUserInfo(url);
            /**
    	     * 获取到用户信息之后,就该写你自己的业务逻辑了
    	     */
            return PasswordUtils.redirectTo("/success");
        }
    

    以上代码,从我自己的项目中拷贝而来,如果你直接使用,你需要对其业务代码进行修改

    五、网络请求方法

    第四步代码中所用到的网络接口方法,我放在了 QqHttpClient.java 文件中,主要有三个方法

    /**
         * 获取Access Token
         */
        public static String getAccessToken(String url) throws IOException {
            CloseableHttpClient client = HttpClients.createDefault();
            String token = null;
    
            HttpGet httpGet = new HttpGet(url);
            HttpResponse response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();
    
            if (entity != null) {
                String result = EntityUtils.toString(entity, "UTF-8");
                if (result.indexOf("access_token") >= 0) {
                    String[] array = result.split("&");
                    for (String str : array) {
                        if (str.indexOf("access_token") >= 0) {
                            token = str.substring(str.indexOf("=") + 1);
                            break;
                        }
                    }
                }
            }
    
            httpGet.releaseConnection();
            return token;
        }
    
        /**
         * 获取openID
         */
        public static String getOpenID(String url) throws IOException {
            JSONObject jsonObject = null;
            CloseableHttpClient client = HttpClients.createDefault();
    
            HttpGet httpGet = new HttpGet(url);
            HttpResponse response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();
    
            if (entity != null) {
                String result = EntityUtils.toString(entity, "UTF-8");
                jsonObject = parseJSONP(result);
            }
    
            httpGet.releaseConnection();
    
            if (jsonObject != null) {
                return jsonObject.getString("openid");
            } else {
                return null;
            }
        }
    
        /**
         * 获取QQ用户信息
         */
        public static JSONObject getUserInfo(String url) throws IOException {
            JSONObject jsonObject = null;
            CloseableHttpClient client = HttpClients.createDefault();
    
            HttpGet httpGet = new HttpGet(url);
            HttpResponse response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();
    
            if (entity != null) {
                String result = EntityUtils.toString(entity, "UTF-8");
                jsonObject = JSONObject.parseObject(result);
            }
    
            httpGet.releaseConnection();
    
            return jsonObject;
        }
        
        /**
         * 转换json对象
         */
        private static JSONObject parseJSONP(String jsonp) {
            int startIndex = jsonp.indexOf("(");
            int endIndex = jsonp.lastIndexOf(")");
            String json = jsonp.substring(startIndex + 1, endIndex);
            return JSONObject.parseObject(json);
        }
    

    以上,就是完成 QQ 授权登录的过程

    六、总结

    总结来说如图所示
    qq授权登录示意图
    如您在阅读中发现不足,欢迎留言!!!

    下一篇:

    【QQ互联】四、分享至QQ、新浪微博

    展开全文
  • 第三方平台系列文章,今天终于又开始更新了,今天继续学习微信(wechat)授权第三方登录 一、准备工作 1、申请微信公众测试号 由于我们是个人开发者,我们需要去注册申请一个微信公众平台的测试号 ...
  • 【第三方互联】十四、Github授权第三方登录

    千次阅读 多人点赞 2020-04-08 20:44:41
    今天我们继续学习:Github授权第三方登录,前面我们已经学习了 码云(Gitee)授权第三方登录,Github授权第三方登录的实现过程其实和 码云(Gitee)授权第三方登录的实现过程类似,只是有一些细节需要注意,下面我们...
  • 由于请求第三方接口需要携带Token,且第三方登录的token的过期时间我不能控制, 就导致请求失败重新登录了,那么这这种场景,我应该解决token过期时间呢? **问题2:** 如果说第三方提供了刷新token机制,那么...
  • 第三方登录功能的实现

    万次阅读 多人点赞 2017-03-28 17:13:04
    为什么要使用第三方登录:一般稍微作为一个大点的项目,为了提高用户的群体都会做第三方登录(如:QQ,微信,新浪等) 在往下看之前先注册第三方网站的开发者账号,创建应用完成审核。 QQ : QQ开发者平台 微信: 微信...
  • 今天继续学习:百度(baidu)授权第三方登录 一、准备工作 1、登录 百度开发者中心 官网地址:https://developer.baidu.com/ 注册账号,登录官网 2、注册成为“百度开发者” 在页面底部找到“应用管理”,当然...
  • Java实现QQ第三方登录

    万次阅读 多人点赞 2019-11-03 10:58:07
    前期准备工作 1.云服务器 2.备案的域名 3.本地调试需要修改hosts文件,将域名映射到127.0.0.1 如何修改hosts文件:... 申请QQ互联,并成为开发者 ...申请QQ互联创建应用时需要备案域名,所以建议提前准备备案域名。...

空空如也

1 2 3 4 5 ... 20
收藏数 12,492
精华内容 4,996
关键字:

第三方登录