【第三方登录】之QQ第三方登录
最近公司做了个网站,需要用到第三方登录的东西。有QQ第三方登录,微信第三方登录。先把QQ第三方登录的代码列一下吧。
public partial class QQBack : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Log.Debug("QQ登录", "登录开始");
string app_id = "";
var serializer = new JavaScriptSerializer();
var data = "";
Dictionary<string, string> obj = new Dictionary<string, string>();
//获取 accessToken
string code = Request.QueryString["code"];
if (!string.IsNullOrEmpty(code))
{
string url = string.Format("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id={0}&client_secret=872660e40efb3b16eecfce835b3ce081&code={1}&state={2}&redirect_uri={3}"
, app_id
, code
, "test"
, "回调地址,还是当前页面地址,以http://www.xxx.com/xxx.aspx 模式,并且对地址进行编码!"); data = Tools.GetPage(url);
Log.Debug("第一个地址:", data);
string accessToken = "";
string[] array_access_token = data.Split('&');
if (array_access_token != null && array_access_token.Length > )
{
for (int i = ; i < array_access_token.Length; i++)
{
if (!string.IsNullOrEmpty(array_access_token[i]))
{
string[] keyValue = array_access_token[i].Split('='); if (keyValue != null && keyValue.Length > )
{
if (keyValue[] == "access_token")
{
accessToken = keyValue[];
}
}
}
}
} //获取OpenID
string url2 = "https://graph.qq.com/oauth2.0/me?access_token=" + accessToken;
data = Tools.GetPage(url2);
Log.Debug("第二个地址:", data);
data = data.Replace("callback(", "").Replace(");", "");
obj = serializer.Deserialize<Dictionary<string, string>>(data);
string openid;
if (!obj.TryGetValue("openid", out openid))
return; string url3 = string.Format("https://graph.qq.com/user/get_user_info?access_token={0}&oauth_consumer_key={1}&openid={2}", accessToken, app_id, openid); data = Tools.GetPage(url3);
Log.Debug("第三个地址:", data);
var userInfo = serializer.Deserialize<Dictionary<string, string>>(data); if (openid != null && userInfo["nickname"] != null)
{
Users _MTUsers = GetModel( openid); //获取用户信息 if (_MTUsers == null)
{
Insert(_MTUsers); //如果不存在,创建
}
else
{
_MTUsers.LastLogin = DateTime.Now;
_MTUsers.LastUpdated = DateTime.Now;
Instance.MTUsers.Business.Update(_MTUsers); //存在则修改
}
Session["CurrentUser"] = _MTUsers; //将当前登录的用户放入session中
Log.Debug("QQ登录", "执行页面跳转成功");
}
}
Log.Debug("QQ登录", "登录结束");
}
}
【第三方登录】之QQ第三方登录的更多相关文章
- apiClould微信三方登录,qq三方登录
三方登录需要在config.xml文件中配置一下,res文件下需要新建一个key.xml文件中也需要配置,请点击链接查看详情 微信:https://docs.apicloud.com/Client-A ...
- 利用JS_SDK实现QQ第三方登录
前言 现如今,第三方登录已成为大部分网站必备的一项基础技能,引入时髦的第三方登录不仅能帮你吸引更多的用户,也让你的网站可以充分利用其他大型网站的用户资源.本次教程将让你的网站最快捷便利地引入QQ登录. ...
- 使用QQ第三方登录时,手机应用和网站应用对同一个QQ号,获取到的openid不一样
使用QQ第三方登录时,手机应用和网站应用对同一个QQ号,获取到的openid不一样openid生成是根据应用的appid和QQ号的一些信息加密生成,对于一个appid和QQ号来说,openid是唯一的 ...
- 第三方登录之qq登录(转载)
iOS QQ第三方登实现 我们经常会见到应用登陆的时候会有QQ,微信,微博等的第三方登陆 如图: 下面我们主要讲一下qq的第三方登陆如何实现 首先,到官网注册: http://wiki.conne ...
- QQ第三方登录
QQ第三方登录 在Android应用程序的开发过程中,很多时候需要加入用户登录/注册模块.除了自己动手设计登录界面并实现相应功能外,现在还可以借助百度.腾讯等开发者平台提供的第三方账号登录模块.最近研 ...
- PHP实现QQ第三方登录
PHP实现QQ第三方登录 学习之前,请大家先看一下oAuth协议. 首先呢,我们进入QQ互联的官方网站 http://connect.qq.com登入我们自己的QQ号,没有QQ号的小伙伴可以忽略本篇博 ...
- 实现OAUTH协议 实现 QQ 第三方登录效果
1.OAuth的简述 OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全.开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是 ...
- 开放平台-web实现QQ第三方登录
应用场景 web应用通过QQ登录授权实现第三方登录. 操作步骤 1 注册成为QQ互联平台开发者,http://connect.qq.com/ 2 准备一个可访问的域名, ...
- QQ登录接口(第三方登录接口)
CI框架 QQ接口(第三方登录接口PHP版) 本帖内容较多,大部分都是源码,要修改的地方只有一个,其他只要复制过去,就可以完美运行.本帖主要针对CI框架,不用下载SDK,按我下面的步骤,建文件,复制代 ...
随机推荐
- springmvc 文件下传、上载、预览。以二进制形式存放到数据库(转载)
springmvc 文件上传.下载.预览.以二进制形式存放到数据库.数据库中的关于传入附件的字段我写了2个:一个存放内容accessory,一个存放文件的后缀filetype 上传:首先需要2个必须的 ...
- Android环境搭建中遇到的小问题
有一认识的同学做Android,结果他们搭建环境出现问题,最后卡在了一关,因为听说自己学过Java,所以就... 最后,自己试了一下,结果将遇到的解决问题记下来了:(看到小绿人后自己也被Android ...
- 【leetcode】Balanced Binary Tree(middle)
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- 【leetcode】Reverse Bits(middle)
Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in ...
- asp.net DataSet数据导出到Excel中
方法: [STAThread]///这是必须的 public override void VerifyRenderingInServerForm(System.Web.UI.Control co ...
- DOM动画效果基础入门
一.什么是DOM? Document Object Model文档对象模型 当创建一个网页并把它加载到web浏览器中时,如果没有document(文档): DOM根据你编写的网页文档创建一个文档对象 ...
- backtracking(回溯算法)
http://blog.csdn.net/zxasqwedc/article/details/42270215 permutation的程式码都会长成这样的格式: ] = { 'a', 'b', 'c ...
- NYOJ之茵茵的第一课
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtQAAAJ/CAIAAADXlNOKAAAgAElEQVR4nO3dsVLjOsMG4P8m6LkQ2u
- 理解Java中的引用传递和值传递
关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题,有论坛说Java中只有值传递,也有些地方说引用传递和值传递都存在,比较容易让人迷惑.关于值传递和引用传递其实需要分情况看待,今天学习 ...
- 二叉树学习笔记之经典平衡二叉树(AVL树)
二叉查找树(BSTree)中进行查找.插入和删除操作的时间复杂度都是O(h),其中h为树的高度.BST的高度直接影响到操作实现的性能,最坏情况下,二叉查找树会退化成一个单链表,比如插入的节点序列本身就 ...