我正在尝试使用 DotNetOpenAuth 使 Steam 登录为我的网站工作。

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

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

1) 将 dotnetopenauth 引用文件添加到\bin 和配置

2) 在数据库中为我从 DotNetOpenAuth 得到的响应添加了一个唯一的用户字段。

所以这是我的问题

如何使用 DotNetOpenAuth 检索 Steam id?

我发现了一些用 php 完成的例子:
http://forums.steampowered.com/forums/showthread.php?t=1430511

最佳答案

当您包含正确的 DotNetOpenAuth 时,这应该可以做到。

这是您通常会放入登录页面的代码,第一个 if 检查我们是否收到来自 Steam 的响应并处理响应。

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

与其他开放身份验证提供商不同,steam 不会通过随请求一起发送声明请求来提供其他用户信息(电子邮件等)——它只会在响应中提供一个 URL。ClaimedIdentifier 是一个包含用户 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();
        }
    }
}

关于api - Steam 登录认证 C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20845146/

10-12 20:44