using Senparc.Weixin.Entities;
using Senparc.Weixin.HttpUtility;
using Senparc.Weixin.QY.AdvancedAPIs.OAuth2;
using Senparc.Weixin.QY.CommonAPIs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace CRM.CIS.WeiXin
{
public partial class TwoVerification : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack)
{
string code = Request["code"];
string state = Request["state"]; if (!string.IsNullOrEmpty(code) && !string.IsNullOrEmpty(state))
{
string CorpId = Properties.Settings.Default.CorpId;
string Secret = Properties.Settings.Default.Secret;
//注册corpid
if (!AccessTokenContainer.CheckRegistered(CorpId))
{
AccessTokenContainer.Register(CorpId, Secret);
} string accessToken = AccessTokenContainer.GetToken(CorpId);
GetUserIdResult guir = Senparc.Weixin.QY.AdvancedAPIs.OAuth2.OAuth2Api.GetUserId(accessToken, code, 1);
if (guir.errcode == 0)
{
//读取职员状态
var member = Senparc.Weixin.QY.AdvancedAPIs.MailList.MailListApi.GetMember(accessToken, guir.UserId);
hfaccessToken.Value = accessToken;//使用HiddenField保存了信息
hfValue.Value = guir.UserId;//HiddenField 保存了uid
ObjectDataSource1.DataBind();
if (member.status == 1)
{
btnOK.Enabled = false;
btnOK.Text = "已关注";
}
else if (member.status == 2)
{
btnOK.Enabled = false;
btnOK.Text = "已冻结";
}
else
{
btnOK.Enabled = true;
btnOK.Text = "请关注";
} } }
#if DEBUG
else
{ hfValue.Value = "MysticBoy";
ObjectDataSource1.DataBind();
}
#endif
}
}
//这是从数据库里面查询要用ObjectDataSource1显示的内容的方法, 根据你的情况来写这段代码
public bas_Company GetCompanyInfo(string userid)
{
bas_Company result = null;
using (CISDBEntities ef = new CISDBEntities())
{
var ci = from c in ef.bas_Company where c.UserName == userid select c;
if (ci.Any())
{
result = ci.Single();
} }
return result;
}
protected void btnOK_Click(object sender, EventArgs e)
{
string userId = hfValue.Value;
string accessToken = hfaccessToken.Value;
var member = Senparc.Weixin.QY.AdvancedAPIs.MailList.MailListApi.GetMember(accessToken, userId);
//根据上次保留的accessToken userId 信息查询这个会员是不是已经被关注,尤其是在手机里面点了返回后!
if (member.status == 4)//是未关注
{
//https://github.com/JeffreySu/WeiXinMPSDK 里面的
// Senparc.Weixin.QY.AdvancedAPIs.Concern.ConcernApi.TwoVerification
 //截止2015年4月14日里面的参数没传对, 因此在这里使用自己的代码
var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/user/authsucc?access_token={0}&userid={1}", accessToken, userId);
var result = Get.GetJson<QyJsonResult>(url);
if (result.errcode == 0)
{
btnOK.Enabled = false;
btnOK.Text = "已经关注";
}
else
{
btnOK.Text = result.errmsg;
}
}
else if (member.status == 1)//已经关注了
{
btnOK.Enabled = false;
btnOK.Text = "已关注";
}
else if (member.status == 2)//被冻结了
{
btnOK.Enabled = false;
btnOK.Text = "已冻结";
}
}
}
}

  由于本职工作是Linux下使用C做嵌入式应用开发,关于微信等BS方面相形见拙,请看官不要见笑

微信二次认证 C#的更多相关文章

  1. php 人人商城 生成 临时微信二维码,并保存成海报图片 有效期一个月

    public function getPoster(){ global $_W; global $_GPC; $mm = pdo_fetch('select nickname,codetime fro ...

  2. 小猪cms微信二次开发之怎样分页

    $db=D('Classify'); $zid=$db->where(array('id'=>$this->_GET('fid'),'token'=>$this->tok ...

  3. HTTP协议 (二) 基本认证

    HTTP协议 (二) 基本认证 http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别. 桌面应用程序(比如新浪桌面客户端, skydrive客户端)跟Web服务器之间是如何 ...

  4. HTML5 微信二维码提示框

    这是一个js的小案例,主要效果是显示一个微信二维码的提示框,非常简单实用. 源码如下: JS部分 <script src="js/jquery-1.8.3.min.js"&g ...

  5. (5)微信二次开发 之 XML格式数据解析

    1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...

  6. 微信二维码支付-模式一(PC端,解决中文乱码问题)

    近期公司调完银联,调支付宝,调完支付宝调微信.说实话微信的帮助文档确实是烂,而且有没有技术支持,害的我头发都掉了一桌.不说废话了,看代码. 首先登陆微信的公众平台(微信的服务号不是订阅号),然后选择微 ...

  7. JHipster生成微服务架构的应用栈(二)- 认证微服务示例

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

  8. github二次认证接收短信的问题

    这两天登陆github都被提示说我账号的密码已经被归类,提醒我修改密码. 改密码的时候发现GitHub有个二次认证的功能,分别是app和sms短信认证.app这里就不讲了,我们讲一下github的短信 ...

  9. CSS实现鼠标经过网页图标弹出微信二维码

     特点 1.纯CSS实现二维码展示功能,减少加载JS: 2.使用CSS3 transform 属性: ## 第一步 在需要展示二维码的地方添加如下代码,其中<a>标签内容可以根据需要修改成 ...

随机推荐

  1. 【hihocoder 1473】小Ho的强迫症

    [题目链接]:http://hihocoder.com/problemset/problem/1473 [题意] [题解] 假定初始为在在0位置(相对它左边那条线); 则考虑; 多少步之后,人又能这到 ...

  2. java中Date与String转化 string转float

    这种转换要用到java.text.SimpleDateFormat类 字符串转换成日期类型: 方法1: Date date=new Date("2017-02-01"); 方法2: ...

  3. java IO(BIO)、NIO、AIO

    IO 服务端ServerSocket 客户端Socket 缺点每次客户端建立连接都会另外启一个线程处理.读取和发送数据都是阻塞式的. 如果1000个客户端建立连接将会产生1000个线程 Server端 ...

  4. LightOJ1234 Harmonic Number

    /* LightOJ1234 Harmonic Number http://lightoj.com/login_main.php?url=volume_showproblem.php?problem= ...

  5. CodeForces - 274A - k-Multiple Free Set

    先上题目 k-Multiple Free Set time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  6. Java 学习(8):java 方法

    Java方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 命名规则: 1. 必须以 字母.'_'或'$'开头. ...

  7. redis-事务-transaction

    redis的目标的是: 简洁,高效,由于事务本身就是一个很复杂的东西,所有我们不能把事务做的太复杂... multi,exec 127.0.0.1:6379> multi OK 127.0.0. ...

  8. sikuli_ide打开提示没有对应的javaw

    对于sikuli,需要安装32位的jdk且不能高于1.7的版本 对于64位系统的C盘,Program Files文件夹是64位的,Program File(x86)文件夹是32位的 需要安装一个32位 ...

  9. Palindrome Linked List 234

    推断是否为回文链栈 时间复杂度为O(n) 空间复杂度为O(1) : 运用递归 保证空间复杂度为O(1): 时间复杂度为O(n): 注意定义了一个全局变量 flag = true 用此标记来标记是否在推 ...

  10. luogu2518 [HAOI2010] 计数

    题目大意 给出一个数字$n$,求满足下列条件的数$x$的个数: $x<n$ 对于来自于$x$十进制各个数位上的非零数字,它们的种类与个数都与$n$的相同. 思路 入手点 设$n$有$t$位数字, ...