0

我已从 Azure 移动服务迁移到应用服务,但我很难弄清楚如何最好地实施扩展的 Facebook 身份验证。

在我的旧实现中,我从 FacebookLoginProvider 继承并从声明中获取令牌。然后我将 CustomFacebookLoginProvider 添加到我的登录提供程序中。然后我使用令牌来获取有关用户的更多信息(他们的出生日期、朋友和性别)。有了这些信息,我创建了一个用户对象并将其保存到我的数据库中。

有没有人对如何最好地在应用服务中重新创建它有任何建议,因为我找不到任何文档。

4

4 回答 4

1

至于如何设置 Facebook 身份验证,您可以在此处找到文档(听起来您已经了解了这么多):

https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-how-to-configure-facebook-authentication/

现在 Facebook 身份验证设置完成,您可以参考以下内容,了解如何获取用户信息:

https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-dotnet-backend-how-to-use-server-sdk/#user-info

// 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?access_token=" 
        + credentials.AccessToken;

    // Create an HttpClient request.
    using (var client = new System.Net.Http.HttpClient())
    {
        // Request the current user info from Facebook.
        using (var resp = await client.GetAsync(fbRequestUrl))
        {
            resp.EnsureSuccessStatusCode();

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

请注意,您必须为System.Security.Principal添加using语句才能使GetAppServiceIdentityAsync扩展方法正常工作。

有关您可以查询哪些 Facebook 用户属性的更多信息,请参阅此处的 Facebook 文档:https ://developers.facebook.com/docs/graph-api/reference/user 。请注意,您可能需要在调用 Facebook 图表时指定您希望作为附加字段查询字符串参数的用户属性。

于 2016-01-14T18:26:19.027 回答
0

我一直在使用以下方法在 iOS 应用程序中获取 Facebook 访问令牌。

应用服务在请求标头中包含 Facebook 访问令牌,请参阅https://azure.microsoft.com/en-in/documentation/articles/app-service-api-authentication/

要获取访问令牌,请使用以下代码在 Azure 门户中创建自定义 API,例如 facebookUserInfo:

module.exports = {
"get": function (request, response, next) {
    response.send(200, { facebookAccessToken: request.headers['x-ms-token-facebook-access-token'] });
}};        

在 iOS 应用中,使用以下代码查询自定义 API:

    let client = self.table!.client
    if client.currentUser != nil {
        client.invokeAPI("facebookUserInfo", body: nil, HTTPMethod: "GET", parameters: nil, headers: nil, completion: { (result, response, error) -> Void in
            if let resultDict = result {
                if let facebookAccessToken = resultDict["facebookAccessToken"]! {
                    print(facebookAccessToken)
                }
            }
        }
    }
于 2016-02-02T03:19:21.150 回答
0

通过使用 Azure App Services 的 Easy Auth 功能,我无需担心身份验证。我对此有一篇博文。我已经解释了我们如何使用 FB GraphApi 来查询 FB 数据。这是链接:https ://blogs.msdn.microsoft.com/kaushal/2017/06/08/using-easy-auth-to-query-facebook-information-via-graph-api/

我在 Github 上部署了示例代码。这是链接:https ://github.com/kaushalp/Facebook-GraphApi-with-EasyAuth

于 2017-06-23T13:09:09.533 回答
0

从移动服务切换到移动应用程序时,我必须做的唯一更改是将开发人员门户中回调 URL 的末尾更改为使用 /.auth/login/facebook/callback 而不是 /signin-facebook,它的工作原理与和以前一样。

请注意,这是针对具有 .NET 后端的 Windows 应用程序;您没有指定您使用的是什么,因此您的里程可能会有所不同。

于 2016-01-14T11:38:08.263 回答