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

Store data and retrieve after redirect to third party URL

在将我的 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/");
    }

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

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

请确保当您启动您的应用程序时,如果它使用 http://localhost:port 托管,并且在重定向后如果它使用 ngRock 域名,那么任何方法都不起作用

Session、Tempdata 和 Cookies 按域名存储

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

希望对您有所帮助。

谢谢