寫在前面:
本文接上文前端篇,將爲大家使用.NET WebAPI實現獲取用戶信息的接口
前端篇:https://blog.csdn.net/weixin_42550800/article/details/94978769
正式開始
1.創建一個WebAPI項目
2.在Nuget中安裝 Senparc.Weixin.MP
在程序包管理控制檯中輸入 Install-package Senparc.Weixin.MP
3.創建一個新的控制器 WechatController
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
using Senparc.Weixin;
using Senparc.Weixin.MP;
using Senparc.Weixin.MP.AdvancedAPIs;
using Senparc.Weixin.MP.AdvancedAPIs.OAuth;
using Senparc.Weixin.MP.Containers;
namespace TryWeChat.Controllers
{
public class WechatController : ApiController
{
//這兩個已經在web.config裏面寫入,所以直接利用ConfiurationManager類下的AppSetting方法獲取
public static readonly string appID = ConfigurationManager.AppSettings["appID"];
public static readonly string appsecret = ConfigurationManager.AppSettings["appsecret"];
// GET api/values
[HttpGet]
public object GetUserInfo(string code)
{
Dictionary<string, OAuthUserInfo> keyValues = new Dictionary<string, OAuthUserInfo>();
OAuthAccessTokenResult oAuthAccessTokenResult = new OAuthAccessTokenResult();
//獲取AccessToken
oAuthAccessTokenResult = OAuthApi.GetAccessToken(appID, appsecret, code);
if (oAuthAccessTokenResult.errcode != ReturnCode.請求成功)
{
//請求失敗後的處理
}
//獲取UserInfo
OAuthUserInfo oAuthUserInfo = OAuthApi.GetUserInfo(oAuthAccessTokenResult.access_token, oAuthAccessTokenResult.openid);
keyValues.Add("Accesstoken", oAuthUserInfo);
//返回Json對象
return Json(keyValues);
}
}
}
4.在配置文件中加入APPID與Secret
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
//appid
<add key="appID" value="wXXXXXXb9" />
//secret
<add key="appsecret" value="XXXXXX" />
</appSettings>
5.在配置文件中配置全局跨域
<system.webServer>
<!--允許跨域 開始-->
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
<!--允許跨域 結束-->
<system.webServer>