Azure App Service Easy Auth

时间:2017-09-20 02:56:46

标签: azure authentication azure-mobile-services

我有一个Azure移动后端设置,使用简单的身份验证进行Facebook和谷歌身份验证,它按预期工作。

每次用户使用任何受支持的提供商登录时,我都希望能够验证它是否是新用户(电子邮件不在数据库中),而无需从客户端拨打其他电话。这可能吗?

1 个答案:

答案 0 :(得分:1)

  

每次用户使用任何受支持的提供商登录时,我都希望能够验证是否是新用户(电子邮件不在数据库中),而无需从客户端进行额外调用。这可能吗?

据我所知,我们无法直接验证是否是新用户。

无论您使用服务器流还是客户端流,轻松验证只会返回访问令牌,以便客​​户端访问移动后端资源,它不会检查用户是新的还是旧的。

如果你想达到这个要求,你需要编写自己的逻辑。

您可以在用户成功登录后编写代码。

例如,facebook登录。

如果您使用登录成功,您可以调用GetAppServiceIdentityAsync扩展方法来获取登录凭据,其中包括针对Facebook Graph API发出请求所需的访问令牌。

// Get the credentials for the logged-in user.
var credentials =
    await this.User
    .GetAppServiceIdentityAsync<FacebookCredentials>(this.Request);

if (credentials.Provider == "Facebook")
{
    // Create a query string with the Facebook access token.
    var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token="
        + credentials.AccessToken;

    // Create an HttpClient request.
    var client = new System.Net.Http.HttpClient();

    // Request the current user info from Facebook.
    var resp = await client.GetAsync(fbRequestUrl);
    resp.EnsureSuccessStatusCode();

    // Do something here with the Facebook user information.
    var fbInfo = await resp.Content.ReadAsStringAsync();
}

然后您可以根据用户信息检查数据库。

有关如何在服务器端获取用户信息的更多详细信息,请参阅How to: Retrieve authenticated user information