我正在尝试使用 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/