zoukankan      html  css  js  c++  java
  • QQ授权登录

    • AppID:你的应用(网站)的ID。
    • AppKey:对你的应用的验证。
    • Redirect_uri:用户确认授权后的回调地址。(需自己设置,有防止别人盗用你的身份获取授权用户信息的作用)
    • OpenID:用户身份的唯一标识。建议保存在本地并与本地创建的uid绑定,以便用户下次登录时可对应到其之前的身份信息,不需要重新授权,使用户体验一致。(获取不到用户的QQ号)
    • AccessToken:表示当前用户在此网站/应用的登录状态与授权信息,建议保存在本地。(相当于token,令牌)
    • Scope:你要获取的信息。
    1. 准备

      注册QQ互联开发者身份

      需要去腾讯QQ互联注册:https://connect.qq.com/。

      准备好网站

      网站要基本开发完成。网站域名,Logo等都有。

      创建应用

      在QQ互联管理中心创建应用。

    2. 部署测试

      添加登录入口

      在登录页面<head></head>中引入:

    • <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" 
      data-appid="APPID" 
      data-redirecturi="REDIRECTURI" 
      charset="utf-8">
      </script>

      官方提供的登录按钮代码,可直接将代码贴到你想要放置入口的位置就行:

    • <span id="qqLoginBtn"></span>
      <script type="text/javascript">
          QC.Login({
             btnId:"qqLoginBtn"    //插入按钮的节点id
      });</script>

      3.回调页面

    •  和登录入口一样
    <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" 
    data-appid="APPID" 
    data-redirecturi="REDIRECTURI" 
    charset="utf-8">
    </script>
    • 设置回调页面
    • <script type="text/javascript">
                  function getInfo() {
                      if(QC.Login.check()){
                          QC.api("get_user_info")
                              .success(function(s){//成功回调
                                  QC.Login.getMe(function(openId, accessToken){
                                      $.post('/你的后台处理Action',{name:s.data.nickname,openid:openId,otype:1,token:accessToken},function(data,status){
                                          if(status=="success"){
                                              alert(s.data.nickname+"恭喜你,登录成功!");
                                              location.href = "/";
                                          }else{
                                              alert("获取用户信息成功!登录失败!");
                                              location.href = "/blog/to/login";
                                          }
                                      })
                                  })
                              })
                              .error(function(f){//失败回调
                                  alert("获取用户信息失败!登录失败!");
                                  location.href = "/blog/to/login";
                              })
                              .complete(function(c){//完成请求回调
                              //alert("获取用户信息完成!");
                              });
                      }else{
                          alert("请登录!");
                          location.href = "/blog/to/login";
                      }
                  }
      </script>

      4.后台处理步骤:

    • - //判断openid是否存在。
      
      - // 如果openid存在,则说明此用户之前登录过或者已与本地user表中的用户绑定。写入cookie,使用户为登录状态,到此结束。
      
      - //如果用户openid不存在,则判断用户名是否存在。
      
      - //如果用户名不存在,则直接生成新的本地用户,并绑定uid与openid。写入cookie,使用户为登录状态,到此结束。
      
      - //如果用户名存在,提醒用户是否验证并与之绑定。如果用户选择验证,并验证通过,则与之绑定。写入cookie,使用户为登录状态,到此结束。
      
      - //如果用户放弃验证,或者验证失败,则生成新的本地用户,并生成新的用户名,绑定uid与openid。写入cookie,使用户为登录状态,到此结束。
  • 相关阅读:
    Dora.Interception,为.NET Core度身打造的AOP框架 [3]:多样化拦截器应用方式
    Dora.Interception,为.NET Core度身打造的AOP框架 [2]:以约定的方式定义拦截器
    Dora.Interception,为.NET Core度身打造的AOP框架 [1]:更加简练的编程体验
    TechEmpower最新一轮的性能测试出炉,ASP.NET Core依旧表现不俗
    [文章汇总]ASP.NET Core框架揭秘[最近更新:2018/10/31]
    依赖注入[8]: .NET Core DI框架[服务消费]
    依赖注入[7]: .NET Core DI框架[服务注册]
    依赖注入[6]: .NET Core DI框架[编程体验]
    依赖注入[5]: 创建一个简易版的DI框架[下篇]
    依赖注入[4]: 创建一个简易版的DI框架[上篇]
  • 原文地址:https://www.cnblogs.com/cosyer/p/7145077.html
Copyright © 2011-2022 走看看