Добрый день. Помогите, пожалуйста с проблемой. При авторизации через api Вконтакте, происходит переадресация на url вида: "
localhost:58821/Auth # access_token= 123456712345123451234512345 &expires_in=0&user_id=1234567"
Обращение к Request.Url.AbsolutePath, Request.Url.AbsoluteUri или Request.RawUrl даёт только ссылку на хост. Как я могу получить параметры из данного url?
Upd.: Вероятно проблема в том что адрес и get параметры разделяются символом '#', а не '?', поэтому параметры получить не получается. Можно ли как-то получить всю строку?
Upd. - code:
public class HomeController : Controller
{
private readonly AuthorizationRoot _authorizationRoot;
private const string ProviderNameKey = "providerName";
private string ProviderName
{
get { return (string)Session[ProviderNameKey]; }
set { Session[ProviderNameKey] = value; }
}
public HomeController(AuthorizationRoot authorizationRoot)
{
_authorizationRoot = authorizationRoot;
mVkProvider = new VkProvider();
}
public ActionResult Index()
{
var model = _authorizationRoot.Clients.Select(client => new LoginInfoModel
{
ProviderName = client.Name
});
return View(model);
}
/// <summary>
/// Redirect to login url of selected provider.
/// </summary>
public RedirectResult Login(string providerName)
{
ProviderName = providerName;
var client = GetClient();
string url = client.GetLoginLinkUri();
url = url.Replace("response_type=code", "response_type=token");
RedirectResult redirectResult = new RedirectResult(url);
return redirectResult;
}
/// <summary>
/// Renders information received from authentication service.
/// </summary>
public ActionResult Auth()
{
string fragment = Request.Url.Fragment; // fragment = ""
OAuth2Client client = (OAuth2Client)GetClient();
var userInfo = client.GetUserInfo(Request.QueryString);
mVkProvider.AccessToken = client.AccessToken;
JObject res = mVkProvider.SearchReferences("Test");
return View(userInfo);
}
private IClient GetClient()
{
return _authorizationRoot.Clients.First(c => c.Name == ProviderName);
}
}
}