微信(一) 获取openid 网页授权 C# WeChatHelper
用.Net开发微信的时候第一步就是获取微信的网页授权,获取openid。
自己做个总结,以后也好用,这里只提供了获取openid的接口,后续程序有待开发
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Net;
using System.Web.Script.Serialization; namespace WechatHelper
{
/// <summary>
/// 在网站下创建WeChat文件夹,将微信页面放在WeChat文件夹下
/// 调用GetOpenID()方法。
/// </summary>
public class WeChatHelper
{
public static string appId = "在微信公共平台中拿";
public static string secret = "在微信公共平台中拿";
public static string code = ""; /// <summary>
/// 获取openID
/// </summary>
/// <param name="type">回调页面的绝对路径</param>
public static void GetOpenID(string type)
{
if ((HttpContext.Current.Request.Cookies["openid"]) == null)
{
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
Dictionary<string, object> dict = new Dictionary<string, object>();
string code = GetCode(type); //获取code
AccessToken(code); //获取accessToken
HttpContext.Current.Response.Redirect("/WeChat/" + type + ".aspx");
}
}
/// <summary>
/// 获取code代码
/// </summary>
/// <returns></returns>
public static string GetCode(string TypeName)
{
if (HttpContext.Current.Request.QueryString["Code"] != null) //判断code是否存在
{
if (HttpContext.Current.Request.Cookies["Code"] == null) //判断是否是第二次进入
{
SetCookie("code", HttpContext.Current.Request.QueryString["Code"], ); //写code 保存到cookies
code = HttpContext.Current.Request.QueryString["Code"];
}
else
{
delCookies("code"); //删除cookies CodeURL(TypeName); //code重新跳转URL
}
}
else
{
CodeURL(TypeName); //code跳转URL
}
return code;
}
/// <summary>
/// 获取AccessToken
/// </summary>
/// <returns></returns>
public static string AccessToken(string code)
{
Dictionary<string, string> obj = new Dictionary<string, string>();
var client = new System.Net.WebClient();
var serializer = new JavaScriptSerializer();
string url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appId, secret, code);
client.Encoding = System.Text.Encoding.UTF8;
string dataaccess = "";
try
{
dataaccess = client.DownloadString(url);
}
catch (Exception e)
{
//存log方法
}
//获取字典
obj = serializer.Deserialize<Dictionary<string, string>>(dataaccess);
string accessToken = "";
if (obj.TryGetValue("access_token", out accessToken)) //判断access_Token是否存在
{
SetCookie("openid", obj["openid"], );
}
else //access_Token 失效时重新发送。
{
//存log方法
}
return accessToken;
}
/// <summary>
/// 设置cookies
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
/// <param name="time"></param>
public static void SetCookie(string name, string value, int time)
{
HttpCookie cookies = new HttpCookie(name);
cookies.Name = name;
cookies.Value = value;
cookies.Expires = DateTime.Now.AddDays(time);
HttpContext.Current.Response.Cookies.Add(cookies); }
/// <summary>
/// 跳转codeURL
/// </summary>
/// <param name="TypeName"></param>
public static void CodeURL(string TypeName)
{
string url = "";
string locationhref = "http://网站域名/WeChat/"+TypeName+".aspx";
url = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect", appId, locationhref);
HttpContext.Current.Response.Redirect(url);
}
/// <summary>
/// 删除cookies
/// </summary>
/// <param name="name"></param>
public static void delCookies(string name)
{
foreach (string cookiename in HttpContext.Current.Request.Cookies.AllKeys)
{
HttpCookie cookies = HttpContext.Current.Request.Cookies[name];
if (cookies != null)
{
cookies.Expires = DateTime.Today.AddDays(-);
HttpContext.Current.Response.Cookies.Add(cookies);
HttpContext.Current.Request.Cookies.Remove(name);
}
}
}
}
}
微信(一) 获取openid 网页授权 C# WeChatHelper的更多相关文章
- 亲历H5移动端游戏微信支付接入及那些坑(二)——获取Openid和授权
第一篇中将一些坑说明,那么这篇开始正式进入接入步骤.具体的参数说明,我不会列出,毕竟微信官方文档都有,我想大家都看的懂,而且这接口也有可能微信会变动,所以不列出来,也是不想引起大家的误解,接入步骤只起 ...
- C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息二
前言 这一篇实现snsapi_userinfo,写这篇时其实我是有疑惑的,因为我并没有调试成功,但是我反复检查程序和思路是没有问题的,因为我使用的测试公众号,群里一个伙计说他之前调试时用的也是测试公众 ...
- C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息一
前言 微信网页授权共分为两种方式:snsapi_base.snsapi_userinfo. snsapi_base需要关注公众号,获取用户信息时不弹出用户授权界面. snsapi_userinfo是在 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(76)-微信公众平台开发-网页授权
前言 网页授权是:应用或者网站请求你用你的微信帐号登录,同意之后第三方应用可以获取你的个人信息 网上说了一大堆参数,实际很难理解和猜透,我们以实际的代码来演示比较通俗易懂 配置 实现之前我们必须配置用 ...
- 微信开发之Author网页授权
微信开发中,经常有这样的需求:获得用户头像.绑定微信号给用户发信息.. 那么实现这些的前提就是授权! 1.配置安全回调域名: 在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的&q ...
- 绑定微信以及获取openId
由于公司最近在做一个微信公众号的项目,需要获取用户openId,我再一次踏入了微信的坑! 先在这里告诫后来的同志,如果一样要开始做有关微信的东西,最好是有前辈,或者直接看完文档,不懂或者纳闷的地方直接 ...
- [转] Android进阶——安卓接入微信,获取OpenID
PS: sendAuthRequest拿到code,通过code拿到access_token和openId,access_token可以拿到用户的信息 http://blog.csdn.net/hao ...
- asp.net mvc 根据浏览器判断,如果是微信浏览器则进行网页授权,否则直接访问
遇到这个需求,想到的第一点就是,这个肯定是需要写在一个通用的地方.方便调用.一般可以定义个 父类控制器在OnActionExcuting方法执行前写逻辑,先上代码,一边写代码一边讲解: /// < ...
- 微信企业号获取OpenID过程
define('CorpID', "wx82e2c31215d9a5a7"); define('CorpSecret', ""); //当前管理组 设置-> ...
随机推荐
- C#生成软件注册码
开发软件时,当用到商业用途时,注册码与激活码就显得很重要了.现在的软件破解技术实在在强了,各种国内外大型软件都有注册机制,但同时也不断地被破解.下面发的只是一个常用版本,发出源码被破就更容易了,但我们 ...
- 架构探险——第二章(为web应用添加业务功能)
第二章不使用框架完成了自己的Web应用. 重点: 服务层的完善优化过程,思路 在看这一段的时候引起了无数次的共鸣.相信大家在开始接触Java Web的时候,都做过类似的封装和优化. 第一版 在Serv ...
- iOS开发——UI篇Swift篇&UITextView
UITextView 一:UITextView使用及其属性的设置 titleLabel.text = titleString //创建UITextView对象 textView = UITextVie ...
- Xcode常见的编译、运行等错误的解决
Xcode常见的编译.运行等错误的解决 项目没找到Info.plist的错误 The solution for this particular instance of the error was “I ...
- Linux网卡高级命令、IP别名及多网卡绑定 转
http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/26/3100065.html 本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名 ...
- Squish License
https://www.froglogic.com/squish/gui-testing/prices-and-licensing/index.php Prices and Licensing Who ...
- python 操作word文档
因为工作需要操作一些word文档,记录一下学习思路 #-*- encoding: utf8 -*- import win32com from win32com.client import Dispat ...
- 【阿里云产品公测】ACE安装wordpress博客图文教程
作者:阿里云用户51干警网 阿里云ace搭建wordpress图文教程 按照大大说的,wordpress确实能够轻松创建,只有几步. 我想说,小白的世界技术大大还是不了解.想当初我了解一下怎么 ...
- Ios入门
storyboard 文件的认识 用来描述软件界面 默认情况下程序启动就会加载Main.storyboard 加载storyboard时,会首先创建和显示箭头所指向的控制器界面 什么是UIscroll ...
- 如何鉴别程序抄袭c语言程序代写
如何鉴别程序抄袭:如何鉴别一份程序代码是抄袭另一份程序.输入:两个C语言源程序文件 输出:抄袭了多少?给出最相似的片段,判断是谁抄袭了谁? 提示:首先进行统一规范化排版,去掉无谓的空格.空行,然后比对 ...