我希望用户能够通过移动应用程序(android和ios)和/或网站(使用asp.net MVC构建)登录facebook/google。。。
我的数据库应该存储什么才能在移动应用程序和网站上进行身份验证?userId,谷歌/脸书代币?
我不确定如何保存用户信息。我应该把这个和OWIN结合起来吗?我对asp.net的身份不太了解,但我已经看到它与第三方提供商的关系相当直接。。。。问题是,如果我是第一次从移动应用程序登录,我应该通过程序将新用户添加到数据库中吗?
到目前为止,我认为这似乎是最好的链接:http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/
但我希望有一个更简单的方法。
我正在获取google/fb令牌,并将它们发送到服务器以获取用户的id。。。
我需要在这里做什么,这样,如果google/fb用户通过网络登录,他们将被识别为同一用户。
似乎MS已经让使用ASP.Net Identity为网络设置社交登录变得如此容易,但却忽略了如何与移动设备一起使用,使用sql server数据库来存储用户/会员详细信息。。。
只是想找出将移动和网络用户作为一个来管理的最佳方式
此链接描述了您要查找的所有内容http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on
你必须在数据库中存储什么,以检查用户是否已经存在于你的数据库中,这可以从你将在用户凭据验证后从脸书或谷歌获得的响应中获得,脸书&作为回应,谷歌必须提供用户的详细信息。如电子邮件Id、出生日期等,您可以将这些详细信息保存在数据库中,每次登录时都会检查用户是否已经存在并相应注册。
回应的细节在另一篇WebApi ASP.NET Identity Facebook登录中提到
public class FacebookLoginModel
{
public string token { get; set; }
public string username { get; set; }
public string userid { get; set; }
}
public class FacebookUserViewModel
{
public string id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public string username { get; set; }
public string email { get; set; }
}
这对于Google登录来说相对简单。最简单的方法是将唯一的ID存储在您的本地数据库中,谷歌会为您验证的每个帐户返回该ID。
您可以在登录意图成功后调用getSignInAccount方法。
Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();
String personName = acct.getDisplayName();
String personEmail = acct.getEmail();
**String personId = acct.getId();**
Uri personPhoto = acct.getPhotoUrl();
无论是通过手机还是手机登录,你都知道是同一个人。更多详细信息,请访问https://developers.google.com/identity/sign-in/android/people
在任何情况下,每次有新用户登录时,你都必须以编程方式将用户存储在数据库中。因此,你必须将他们的personID存储为一个额外的字段,以便在加班时对他们进行身份验证。