【第三方登录】之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,按我下面的步骤,建文件,复制代 ...
随机推荐
- FileUpload控件使用初步
FileUpload控件使用初步 FileUpload控件使用初步: 1.实现文件上传 protected void btnSubmit_click(object sender, EventArg ...
- ORACLE、MYSQL的JDBC配置
info.jdbc.driverClassName=oracle.jdbc.driver.OracleDriver info.jdbc.url=jdbc:oracle:thin:@192.168.18 ...
- 【leetcode】Max Points on a Line(hard)☆
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...
- [页面滚动到底部]jquery $(window).height()取值等于$(document).height()的问题
问题现象:JSP中头部引用了某个head.jsp,在videoList.jsp中生成片段时如下 实际最终生成的HTML如下: <!DOCTYPE html>没有解析到,原因找到了,先想办法 ...
- 9.12/ css3拓展、js基础语法、程序基本知识、数据类型、运算符表达方式、语句知识点
css3拓展: <display:none> 将某个元素隐藏 <visibility:hidden> 也是将某个元素隐藏 <display:block&g ...
- iOS开发MAC下配置svn
版本控制对于团队合作显得尤为重要,那么如何在iOS开发中进行版本控制呢?在今天的博客中将会介绍如何在MAC下配置SVN服务器,如何导入我们的工程,如何在Xcode中进行工程的checkOut和Comm ...
- in addition to 和 except for
except for 除了...以外(与 except for 连用的整体词与 except for 所跟的词往往不是同类的,是指整体中除去 一个细节.) eg:Your composition is ...
- 再来一发!DB2 应用程序如何从数据库取数据 Fetch
The FETCH statement positions a cursor on the next row of its result table and assigns the values of ...
- UVA 10066 The Twin Towers
裸最长公共子序列 #include<time.h> #include <cstdio> #include <iostream> #include<algori ...
- Loadrunner11.0 录制手机App脚本的方法
使用Loadrunner录制手机终端App脚本 1. 说明 目前手机APP上的功能日益丰富,对手机应用功能的性能测试需求也越来越多.公司比较抠门没有花钱买Loadrunner,可怜我们工作中一直用的破 ...