Steam登录认证C#

ted*_*ear 3 api dotnetopenauth steam

我试图通过DotNetOpenAuth为我的网站进行蒸汽登录工作.

但是查看文档中的示例并没有让我知道如何使其工作.

这是我到目前为止所做的:

1)将dotnetopenauth参考文件添加到\ bin和配置中

2)在数据库中添加了一个唯一的用户字段,用于从DotNetOpenAuth返回的响应.

所以继承我的问题

如何使用DotNetOpenAuth检索蒸汽ID?

我在php中找到了一些例子:http: //forums.steampowered.com/forums/showthread.php?t = 1430511

小智 7

当你包含正确的DotNetOpenAuth时,应该这样做.

这是您通常会在"登录"页面中放入的代码,第一个代码是否检查我们是否有来自Steam的响应并处理响应.

else部分设置请求并将用户重定向到Steam - 一旦用户登录了Steam,steam将重定向回此页面.

与其他开放式身份验证提供程序不同,Steam不会通过向请求发送声明请求来提供其他用户信息(电子邮件等) - 它只会在response.ClaimedIdentifier中提供URL,该URL是包含用户steam id的URL在末尾.

如果需要,您必须执行字符串操作才能获取ID.

protected void Page_Load(object sender, EventArgs e)
{
    var openid = new OpenIdRelyingParty();
    var response = openid.GetResponse();

    if (response != null)
    {
        switch (response.Status)
        {
            case AuthenticationStatus.Authenticated:
                // do success
                var responseURI = response.ClaimedIdentifier.ToString();
                //"http://steamcommunity.com/openid/id/76561197969877387"
                // last part is steam user id
                break;

            case AuthenticationStatus.Canceled:
            case AuthenticationStatus.Failed:
                // do fail
                break;
        }
    }
    else
    {
        using (OpenIdRelyingParty openidd = new OpenIdRelyingParty())
        {
            IAuthenticationRequest request = openidd.CreateRequest("http://steamcommunity.com/openid");
            request.RedirectToProvider();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)