用于新浪微博,腾讯QQ,淘宝 OAuth2.0 登陆的NET类库封装

目前开放OAuth2互联接口比较常用的有新浪微博,腾讯QQ,淘宝,其实还有微信,只是微信的我木有申请下来,因为手续麻烦,貌似需要扫描它的协议签字然后发过去,所以就放弃封装微信OAuth2登陆接口了,待以后给补上!关于淘宝OAuth网站接入登陆目前淘宝是暂停审核了貌似,也许是因为财大气粗比较任性吧,不过你还是可申请账号的,可以做应用提交给淘宝。

需要源代码的小伙伴请猛戳这里下载,需要已经编译好Dll的小伙伴请猛戳这里下载

一。 下面给出各个OAuth2.0申请合作的地址:

-- sinaweibo OAuth2.0 --

申请接入OAuth2合作地址:http://open.weibo.com (微博.开放平台)
授权Url: https://api.weibo.com/oauth2/authorize?client_id=你的ClientId&redirect_uri=你的回调Url&response_type=code&display=default%20&state=sinaweibo

-- qq OAuth2.0 --

申请接入OAuth2合作地址: http://connect.qq.com (所谓的QQ互联,貌似还有一个http://open.qq.com,但这个我还木有用过,就先用QQ互联吧反正是可以登陆)
授权Url: http://openapi.qzone.qq.com/oauth/show?which=Login&display=pc&client_id=你的ClientId&redirect_uri=你的回调Url&response_type=code&display=default%20&state=qq

-- taobao OAuth2.0 --

申请接入OAuth2合作地址:http://open.taobao.com/index.htm
授权Url: https://oauth.taobao.com/authorize?client_id=你的ClientId&redirect_uri=你的回调Url&response_type=code&display=default%20&state=taobao

-- WeiXin OAuth2.0 --

申请接入OAuth2合作地址:https://open.weixin.qq.com

下面开始给dotNET平台的小伙伴们发福利啦,封装了一个类实现了接入到新浪微博,腾讯QQ,淘宝,和获取用户信息,就实现了下面的2个接口,分别是IOAuthClient和IUserInterface。

namespace GeRenXing.OpenPlatform
{
    public interface IOAuthClient
    {
        AuthOption Option { get; }
        AuthToken Token { get; }
        IUserInterface User { get; }

        String GetAuthorizeUrl(ResponseType responseType);
        AuthToken GetAccessTokenByAuthorizationCode(string code);
        AuthToken GetAccessTokenByPassword(string passport, string password);
        AuthToken GetAccessTokenByRefreshToken(string refreshToken);
        String Get(String url, params RequestOption[] options);
        String Post(String url, params RequestOption[] options);
    }
}
namespace GeRenXing.OpenPlatform
{
    public interface IUserInterface
    {
        dynamic GetUserInfo();
        void EndSession();
    }
}

需要封装更多api的请自行扩展,也可以直接调用IOAuthClient的Get和Post方法直接传递参数快速访问api。
新浪微博和淘宝在获取Token的时候就把OpenId直接返回给你了,而腾讯QQ的OAuth2.0接入里获取Token是不会返回OpenId的,需要单独访问https://graph.qq.com/oauth2.0/me获取OpenId,对于这个不同点我在封装的腾讯QQ ParseAccessToken 方法里面已经自动处理了,就是再次发起了一次获取用户Open Id的请求。

各位小伙伴注意啦:访问授权Url返回的Code码只能使用一次,否则会报下面这个错误:
{"error":"invalid_grant","error_code":21325,"request":"/oauth2/access_token","error_uri":"/oauth2/access_token","error_description":"invalid authorization code:2c2cb4e1f6b70650acbe1dad757ea6bb"}

二。 下面做了个测试的控制台程序,ClientId和ClientSecret,CallbackUrl请改为自己的。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

using GeRenXing.OpenPlatform;

namespace GeRenXing.OpenPlatform.Test
{
    class Program
    {
        private static Dictionary<String, IOAuthClient> m_oauthClients;
        static void Main(string[] args)
        {
            //初始化开放平台客户端(请替换成自己的ClientId,ClientScrert,CallbackUrl)
            m_oauthClients = new Dictionary<string, IOAuthClient>();
            m_oauthClients["sinaweibo"] = new OpenPlatform.OAuthClient.SinaWeiBoClient("You ClientId", "You ClientScrert", "You Callback Url");
            m_oauthClients["qq"] = new OpenPlatform.OAuthClient.TencentQQClient("You ClientId", "You ClientScrert", "You Callback Url");
            m_oauthClients["taobao"] = new OpenPlatform.OAuthClient.TaoBaoClient("You ClientId", "You ClientScrert", "You Callback Url");

            //测试
            OAuthTest("sinaweibo");
            //OAuthTest("qq");
            //OAuthTest("taobao");

            Console.ReadKey(true);
        }

        private static void OAuthTest(String platformCode)
        {
            String authorizeUrl = String.Empty;
            if (String.IsNullOrEmpty(platformCode)) platformCode = "sinaweibo";

            Console.WriteLine("OpenPlatform Request For " + platformCode);
            Console.WriteLine("");

            IOAuthClient oauthClient = m_oauthClients[platformCode];
            oauthClient.Option.State = platformCode;

            //第一步:获取开放平台授权地址
            authorizeUrl = m_oauthClients[platformCode].GetAuthorizeUrl(ResponseType.Code);
            Console.WriteLine("Step 1 - OAuth2.0 for Redirect AuthorizeUrl: ");
            Console.WriteLine(authorizeUrl);

            //第二步:打开IE浏览器获取Code
            Process p = new Process();
            ProcessStartInfo psi = new ProcessStartInfo();
            psi.Arguments = authorizeUrl;
            psi.FileName = "C:\\Program Files\\Internet Explorer\\iexplore.exe";
            p.StartInfo = psi;
            p.Start();

            Console.WriteLine("");
            Console.WriteLine("OAuth2.0 Input Server Response Code");
            String code = Console.ReadLine();

            //第三步:获取开放平台授权令牌
            oauthClient = m_oauthClients[platformCode];
            AuthToken accessToken = oauthClient.GetAccessTokenByAuthorizationCode(code);
            if (accessToken != null)
            {
                Console.WriteLine("");
                Console.WriteLine("Step 2 - OAuth2.0 for AccessToken: " + accessToken.AccessToken);
                //输出原始响应数据
                Console.WriteLine("GetAccessToken Raw Response : ");
                Console.WriteLine(oauthClient.Token.TraceInfo);

                //第四步:调用开放平台API,获取开放平台用户信息
                dynamic oauthProfile = oauthClient.User.GetUserInfo();

                //输出解析出来的用户昵称
                Console.WriteLine("");
                Console.WriteLine("Step 3 - Call Open API UserInfo: ");
                Console.WriteLine("UserInfo Nickname: " + oauthClient.Token.User.Nickname);
                //输出原始响应数据
                Console.WriteLine("GetUserInfo Raw Response : ");
                Console.WriteLine(oauthClient.Token.TraceInfo);
            }
        }
    }
}

三。 下面给出几张测试的截图:
SianWeiBo Oauth2.0
++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++
QQ OAuth2.0
++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++
TaoBao OAuth2.0
++++++++++++++++++++++++++++++++++++++++++++++++++++

时间: 2024-10-11 04:35:12

用于新浪微博,腾讯QQ,淘宝 OAuth2.0 登陆的NET类库封装的相关文章

QQ登录整合/oauth2.0认证-02-跳转到QQ互联页

---------------------------目录---------------------------------- QQ登录整合/oauth2.0认证-01-申请appkey和appid ---------------------------正文---------------------------------- 在上一讲里面,主要是 要读者们 先准备一个 appid 和appkey,准备这个 可能需要一段时间审核,公司类型的可能稍微慢一点 其实 关键是 你能有一个可以绑定上域名的空

QQ登录整合/oauth2.0认证-04-调整到QQ互联进行QQ登录

---------------------------------目录------------------------------------- QQ登录整合/oauth2.0认证-03-对第二节的代码改进 (2015-07-07 16:10) QQ登录整合/oauth2.0认证-02-跳转到QQ互联页 (2015-07-06 20:25) QQ登录整合/oauth2.0认证-01-申请appkey和appid (2015-07-06 20:05) -----------------------

淘宝新人0元购

淘宝新人0元购是什么 淘宝新人0元购是淘宝推出的一个活动,不用任何费用,就可以在淘宝购物.只要是在指定活动地址,首次注册的手机淘宝新用户,都可以参加0元免费购物的优惠. 淘宝新人0元购需要注意的问题 只能手机参加,电脑不能参加.登陆手机淘宝,需在一小时内领取新人礼包,参加0元购活动.超过一小时新人礼包就失效. 参加淘宝新人0元购条件 必须是首次注册手机淘宝的新手机号,如果没有新手机号,可以使用你父母兄弟姐妹的手机,只要这个手机没有注册过淘宝就可以. 如何参加淘宝新人0元购 通过下面图片上的淘宝官

手机淘宝新人0元购红包

手机淘宝新人0元购红包大礼包如何领取?小编详细介绍如何通过淘宝新人0元购的福利社,领取新人礼包并免费在淘宝购物. 什么是淘宝新人0元购? 淘宝新人0元购,大家看这个字面的意思,就知道是0元免费购物,不需要任何费用就可以在淘宝上面购物了.必须使用新的手机号,在新人福利社0元购地址,注册手机淘宝账号,然后登陆领取新人礼包,就可以利用你领取的新人礼包,免费在淘宝上面购物. 淘宝新人0元购是真的吗? 淘宝新人0元购绝对是真实的,是淘宝的一个优惠活动,只限首次注册手机淘宝的新用户参加. 淘宝新人0元购注意

前端技术学习网站(百度、腾讯、淘宝)

百度前端团队blog  淘宝UED官方博客     腾讯前端博客  CSS3+HTML5学习  CSS学习  Maven中文教程  Ps联盟教程网

QQ登录整合/oauth2.0认证-01-申请appkey和appid

本节需要你申请appkey和appid还有绑定域名的空间 首先 再讲课之前 你需要准备以下东西 到腾讯开发平台中申请 开发者 获得appid 和appkey 这两个东东 这两个东东 就算没审核 也可以使用的 只是 测试的时候 你要制定某些QQ号码 进行登录测试 具体申请地址是:http://connect.qq.com/intro/login 注意 你还需要一个域名 并且 将该域名 绑定到一个服务器上面 也就是 你的域名 要能够互联网访问到 因为 申请开发者的时候 需要填写域名并且要验证的 如下

盘点淘宝、腾讯、百度内部使用的JavaScript库

提到JavaScript库,相信很多读者首先就会想到一系列著名的JavaScript库,例如jQuery.Dojo.YUI.Prototype.ExtJS.Google Closure等.这些都是由国外的组织或人员主持开发的,并且大都是开源项目,在中国大陆也受到了开发人员的普遍欢迎. 其实,在国内也存在着一些比较优秀的前端开发框架,并且也大多是开源的,这里以腾讯.淘宝和百度使用的JavaScript前端开发框架为例进行介绍. 腾讯-JX 腾讯内部使用的前端开发框架,名为JX,由腾讯的Web前端团

淘宝账号基于OAuth2.0的登录验证授权登陆第三方网站

首先得有一个注册的appkey和App Secret 该流程分三个步骤: 第一步:通过用户授权获取授权码Code: 第二步:用上一步获取的Code和应用密钥(AppSecret)通过Https Post方式换取Token. 第三步:获取用户Nick或者其他信息 第四步:保存session信息 一.获取授权码Code应用在要求获取用户信息的时候,首先引导用户(Redirect)到登录授权页面https://oauth.taobao.com/authorize 需要传的参数有 名称  是否必需  描

《淘宝技术这十年》读书笔记 (一).淘宝网技术简介及来源

我似乎是2007年初中看<赢在中国>的时候喜欢上马云的,当时对电脑都不是很了解,更别提阿里巴巴和淘宝网了.但当时还是被马云的几句点评深深地吸引,其中我印象最深的一句话就是"短暂的激情是不值钱的,只有长久的激情才是值钱的",以至于我在本科毕业德育答辩时用的题目就是这句话(德育答辩开题我用的题目也是马云的<If not now,when? If not me,who?>其含义是如果不是现在努力,什么时候努力呢?如果不是为了自己奋斗,又是为谁奋斗呢?).的确,想做成任