[HttpGet]
public async Task<IActionResult> OpenOAuthCallback(string auth_code, string appletId)
{
try
{
#region 使用ComponentContainer
//获取OAuth授权结果
QueryAuthResult queryAuthResult;
try
{
queryAuthResult = ComponentContainer.GetQueryAuthResult(_senparcWeixinSetting.Component_Appid, auth_code, false);
}
catch (Exception ex)
{
throw new Exception("QueryAuthResult:" + ex.Message);
}
#endregion
if (queryAuthResult.authorization_info == null) return Json(queryAuthResult);
var dir = Path.Combine(Environment.CurrentDirectory + @"/App_Data/AuthorizerInfo/" + _senparcWeixinSetting.Component_Appid);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
var file = Path.Combine(dir, string.Format("{0}.bin", queryAuthResult.authorization_info.authorizer_appid));
//记录authorization_info(也可以存入数据库或其他可以持久化的地方)
using (FileStream fs = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
var bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bf.Serialize(fs, new RefreshAuthorizerTokenResult { authorizer_access_token = queryAuthResult.authorization_info.authorizer_access_token, expires_in = queryAuthResult.authorization_info.expires_in, authorizer_refresh_token = queryAuthResult.authorization_info.authorizer_refresh_token });
}
//授权成功后,更新客户小程序信息 queryAuthResult.authorization_info.miniprograminf
var getAuthorizerInfoResult = AuthorizerContainer.GetAuthorizerInfoResult(_senparcWeixinSetting.Component_Appid, queryAuthResult.authorization_info.authorizer_appid);
return Json(queryAuthResult.authorization_info);
}
catch (ErrorJsonResultException ex)
{
return Content(ex.Message);
}
}