存储数据并在重定向到第三方URL后进行检索

时间:2018-11-28 06:31:10

标签: c# asp.net-mvc session tempdata

将URL重定向到yahoo auth进行身份验证和访问令牌后,我需要获取一些数据。我尝试使用Session和tempData,但是在重定向和回调到另一个ActionMethod之后都被清除了。也尝试使用HttpCookie,但它也不保留该值。 如何存储此值并在重定向到回调函数后获取它?无论我尝试什么,我都会得到空值。它首先保存,但在重定向后将被擦除。

public async Task<ActionResult> YahooAuth(int Id)
    {
        List<DataAccess.event_dates> yahooEvents = _iadminSettingsService.GetEventDatesByEventId(Id);
        Session["yahooEventObj"] = yahooEvents;
        TempData["yahoEvnts"] = yahooEvents;
        System.Web.HttpCookie cookie = new System.Web.HttpCookie("eventID", Id.ToString());
        Response.Cookies.Add(cookie);
        var url = "https://api.login.yahoo.com/oauth2/request_auth?client_id=XXX&redirect_uri=https://b0552ca5.ngrok.io/Event/YahooCalendar&response_type=code&language=en-us";
        return Redirect(url);
    }

[HttpGet]
    public async Task<ActionResult> YahooCalendar(string code)
    {
        List<DataAccess.event_dates> yahooEvents = (List<DataAccess.event_dates>)Session["yahooEventObj"];
        List<DataAccess.event_dates> lst = (List<DataAccess.event_dates>)TempData["yahoEvnts"];
        string Id = Request.Cookies["eventID"].ToString();
        List<DataAccess.event_dates> yahooEvents = _iadminSettingsService.GetEventDatesByEventId(Convert.ToInt16(Id));
        . . .

        return Redirect("https://calendar.yahoo.com/");
    }

1 个答案:

答案 0 :(得分:0)

我认为通过Session,Tempdata和Cookies的所有方法都可以正常工作。

我检查了您的代码,发现您正在使用ngrock进行本地主机重定向。

请确保在启动应用程序时使用http://localhost:port托管应用程序,并在重定向后使用ngRock域名确保任何方法无效

会话,临时数据和Cookies按域名存储

请检查从ngRock域开始的应用程序,并在重定向后检查是否获取数据?

这对您有帮助吗?

谢谢