c# - 如何为 DotNetOpenAuth 设置返回 url

标签 c# asp.net dotnetopenauth

我正在使用 DotNetOpenAuth 登录 Facebook
这是代码:

var facebookClient = new FacebookClient
{
    ClientIdentifier = "appId",
    ClientSecret = "appSecret"
};
IAuthorizationState authorization = facebookClient.ProcessUserAuthorization();
if (authorization == null)
{
    // Kick off authorization request
    facebookClient.RequestUserAuthorization();
}
else
{

    var request =
        WebRequest.Create("https://graph.facebook.com/me?access_token=" +
                            Uri.EscapeDataString(authorization.AccessToken));

    using (var response = request.GetResponse())
    {
        using (var responseStream = response.GetResponseStream())
        {
            var graph = FacebookGraph.Deserialize(responseStream);
            lblFacebookUserName.Text = HttpUtility.HtmlEncode(graph.Name);
        }
    }
}

因为我使用的是自定义 url 重写器,所以我在登录后收到错误消息,因为返回的 url 类似于

~/foo/foo.aspx?labg=en

我希望它硬编码为

~/foo/foo

任何帮助将不胜感激

最佳答案

您需要使用回调 URL 初始化 AuthorizationState 对象,并将其传递给稍微不同的方法:

// Kick off authorization request
var authorizationState = new AuthorizationState()
{
    Callback = new Uri(Request.Url, Page.ResolveUrl("~/foo/foo"));
};
facebookClient.PrepareRequestUserAuthorization(authorizationState).Send();

关于c# - 如何为 DotNetOpenAuth 设置返回 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3466540/

相关文章:

C#:将子项添加到集合并在同一调用中设置子项的父项

c# - 如何使用默认命名空间反序列化 xml?

c# - 我正在尝试从尚未使用 LINQ 创建具有特定属性的附加对象的用户列表中创建新的用户列表

c# - 中继器内的 DropDownList : How to handle SelectedIndexChange and get DataItem?

dotnetopenauth - OpenID Connect 提供者实现

database-design - 什么是带有 OpenId 的 Forms 身份验证的良好数据库架构?

oauth - oAuth 中的 "consumer"和 "client"有什么区别?

c# - 如何在编译时驱动 C#、C++ 或 Java 编译器计算 1+2+3+...+1000?

c# - 使用 Json.net 反序列化混合类型列表

javascript - 如何使用 UpdatePanel 触发 Selected Index Changed 事件而不进行任何回发?