2

我是另一个 MVC 假人,并试图为我即将进行的项目制定外部登录。我正在使用 VS2013 附带的默认 MVC 模板。按照OWIN 教程中所述的确切步骤进行操作后。我遇到的问题是,当用户从 Google 或 Facebook 或任何其他外部帐户登录时,他不希望再次输入他的信息。我找到的用于通过 Facebook 和 Google 登录的代码,它只是获取无用的用户名。我的意思是我知道它仍然可以工作,但是如果我想获得 facebook 已经告诉用户我将访问的基本信息怎么办。这是我登录成功后得到的回复。有没有办法使用它来获取基本信息。

对象返回

补充:我还包括了来自 Nuget 的 Facebook 包,并且能够通过以下代码获取一些信息。现在问题归结为,我如何要求用户提供更多信息,而不仅仅是普通信息,例如代表他发帖、使用这个 OWIN 的库获取帖子等。

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
        if (loginInfo.Login.LoginProvider.ToLower() == "facebook")
        {
            var accessToken = "something";
            var client = new FacebookClient(accessToken);
            dynamic me = client.Get(loginInfo.DefaultUserName);
        }

脸书客户端图片

4

1 回答 1

1

您可以通过在请求初始登录时添加范围来做到这一点。有一个很好的样本在这里解释

一点代码:

List<string> scope = newList<string>() { "email", "user_about_me", "user_hometown", "friends_about_me", "friends_photos" };
 var x = newFacebookAuthenticationOptions();
 x.Scope.Add("email");
 x.Scope.Add("friends_about_me");
 x.Scope.Add("friends_photos");
 x.AppId = "636919159681109";
 x.AppSecret = "f3c16511fe95e854cf5885c10f83f26f";
 x.Provider = newFacebookAuthenticationProvider()
{
    OnAuthenticated = async context =>
    {
         //Get the access token from FB and store it in the database and
        //use FacebookC# SDK to get more information about the user
        context.Identity.AddClaim(
        new System.Security.Claims.Claim("FacebookAccessToken",
                                             context.AccessToken));
    }
};
 x.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie;
 app.UseFacebookAuthentication(x);
于 2013-12-03T10:34:12.283 回答