C# 不使用ASP.NET的Facebook OAuth 2.0身份验证
我正在为iOS和Android开发一个应用程序,使用Facebook登录。用户将使用他们的Facebook凭据登录他们的手机,我使用Facebook的GraphAPI对他们进行身份验证。我不想存储他们的电子邮件/密码,除非我必须存储 经过身份验证后,我可以从Facebook获得大量信息,但我最感兴趣的问题是访问令牌的授权令牌 由于我的应用程序有一个服务器端组件,我还需要验证此访问令牌在服务器端是否有效(因此,给定访问令牌和Facebook用户id,我应该能够验证此客户端),否则,使用Facebook对用户进行身份验证是毫无意义的,因为我还需要自己存储用户的用户名/密码 我的想法是通过SSL将用户ID和访问令牌发送到我的服务器,然后使用库来验证这些令牌是否有效,以及用户是否确实是它所说的用户,以便继续进行DB访问和其他与服务器相关的一切 然而,我很难在.NET中找到一个不使用ASP.NET的库 是否有任何库可以进行这种简单的验证(给定一个授权令牌和一个用户id,告诉我用户是否登录到Facebook,如果是,令牌的有效期是多久),而不需要注入20个不同的DLL,也不依赖ASP.NET 我已经看过DotNetOpenAuth,但是(1)它似乎需要很多DLL来运行,虽然不理想,但它本身也不错;(2)它似乎依赖于ASP.NET和microsoft库,我强烈希望避免使用这些库 我在Mono上运行我的服务器,理想情况下希望避免使用ASP.NET做任何事情,因为它们在过去被证明是非常不稳定的C# 不使用ASP.NET的Facebook OAuth 2.0身份验证,c#,facebook-graph-api,C#,Facebook Graph Api,我正在为iOS和Android开发一个应用程序,使用Facebook登录。用户将使用他们的Facebook凭据登录他们的手机,我使用Facebook的GraphAPI对他们进行身份验证。我不想存储他们的电子邮件/密码,除非我必须存储 经过身份验证后,我可以从Facebook获得大量信息,但我最感兴趣的问题是访问令牌的授权令牌 由于我的应用程序有一个服务器端组件,我还需要验证此访问令牌在服务器端是否有效(因此,给定访问令牌和Facebook用户id,我应该能够验证此客户端),否则,使用Facebo
非常感谢,您可能想尝试这样的服务,它可以为您处理oAUth内容。根据文档,一旦设置好,您就可以简单地使用rest进行身份验证调用 您可能想尝试一种服务,例如为您处理oAUth内容的服务。根据文档,一旦设置好,您就可以简单地使用rest进行身份验证调用 好的,我找到了一个简单的方法 首先,我下载了: 步骤2 使用服务器访问令牌,我们能够对API进行适当的调用,以确保令牌有效
private FacebookAuthorizationResponse AuthorizeUser(FacebookClient client, string userId, string accessToken)
{
dynamic expirationToken = client.Get("debug_token", new
{
input_token = accessToken,
access_token = _appAccessToken
});
DateTime expiresAt = DateTimeConvertor.FromUnixTime(expirationToken.data.expires_at);
bool isValid = expirationToken.data.is_valid;
if (!isValid)
{
return new FacebookAuthorizationResponse
{
IsAuthorized = false,
};
}
dynamic response = client.Get(userId, new
{
access_token = accessToken,
fields = "id,name"
});
return new FacebookAuthorizationResponse
{
IsAuthorized = isValid,
ExpiresAt = expiresAt,
Name = response.name
};
}
在哪里
好的,我找到了一个简单的方法 首先,我下载了: 步骤2 使用服务器访问令牌,我们能够对API进行适当的调用,以确保令牌有效
private FacebookAuthorizationResponse AuthorizeUser(FacebookClient client, string userId, string accessToken)
{
dynamic expirationToken = client.Get("debug_token", new
{
input_token = accessToken,
access_token = _appAccessToken
});
DateTime expiresAt = DateTimeConvertor.FromUnixTime(expirationToken.data.expires_at);
bool isValid = expirationToken.data.is_valid;
if (!isValid)
{
return new FacebookAuthorizationResponse
{
IsAuthorized = false,
};
}
dynamic response = client.Get(userId, new
{
access_token = accessToken,
fields = "id,name"
});
return new FacebookAuthorizationResponse
{
IsAuthorized = isValid,
ExpiresAt = expiresAt,
Name = response.name
};
}
在哪里
谢谢,但它看起来不像是一个图书馆。我的服务器是用C#编写的,实际上没有任何前端。它只是向客户端提供请求,但我需要验证客户端是否有效,而不是某个狡猾的黑客试图绕过身份验证,这就是为什么我需要一个进行身份验证的.NET库。我可以自己编写HTTP调用并在需要时解析响应,但我想知道是否有一个库已经这样做了。谢谢,但它看起来不像是一个C#库。我的服务器是用C#编写的,实际上没有任何前端。它只是向客户端提供请求,但我需要验证客户端是否有效,而不是某个狡猾的黑客试图绕过身份验证,这就是为什么我需要一个进行身份验证的.NET库。我可以自己编写HTTP调用并在需要时解析响应,但我想知道是否有一个库已经这样做了。
private FacebookAuthorizationResponse AuthorizeUser(FacebookClient client, string userId, string accessToken)
{
dynamic expirationToken = client.Get("debug_token", new
{
input_token = accessToken,
access_token = _appAccessToken
});
DateTime expiresAt = DateTimeConvertor.FromUnixTime(expirationToken.data.expires_at);
bool isValid = expirationToken.data.is_valid;
if (!isValid)
{
return new FacebookAuthorizationResponse
{
IsAuthorized = false,
};
}
dynamic response = client.Get(userId, new
{
access_token = accessToken,
fields = "id,name"
});
return new FacebookAuthorizationResponse
{
IsAuthorized = isValid,
ExpiresAt = expiresAt,
Name = response.name
};
}
public class FacebookAuthorizationResponse
{
public bool IsAuthorized { get; set; }
public DateTime ExpiresAt { get; set; }
public string Name { get; set; }
}