我正在使用Facebook&谷歌登录我的MVC应用程序。 对于Facebook来说,登录并获取有关用户工作良好的数据。谷歌登录也正常工作,它符合我的方法" ExternalLoginCallback"这是我收到AccessToken的地方。
但是 - 我没有找到任何简单的nuget包作为" FacebookClient",我可以在其中传递AccessToken,我可以获得有关已记录用户的更多信息,我希望将它们存储到DB。
我找到了谷歌的其他东西:Google.Apis.Plus.v1我需要再次传递clientId,使用X509Certificate2传递secreatId nad凭据,所以我的问题是是否有任何简单的方式提供" FacebookClient&#34 ;。如果没有,请您描述如何检索有关登录用户的信息?谢谢。
[AllowAnonymous]
public ActionResult Login(string provider)
{
HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties
{
RedirectUri = Url.Action("ExternalLoginCallback")
}, provider);
return new HttpUnauthorizedResult();
}
[AllowAnonymous]
public ActionResult ExternalLoginCallback()
{
var externalLoginInfo = HttpContext.GetOwinContext().Authentication.GetExternalLoginInfo();
var accessToken = externalLoginInfo.ExternalIdentity.Claims.FirstOrDefault(x => x.Type == "FacebookAccessToken")?.Value;
// HERE I WOULD LIKE TO HAVE FUNCTIONALITY SIMILAR TO FacebookClient
var client = new FacebookClient(accessToken);
dynamic facebookData = client.Get("me", new { fields = "email,name,first_name,last_name,gender,locale" });
}
答案 0 :(得分:0)
最后我找到了如何做的方法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFSIZE 20
#define NAMESTRLEN 10
void separate(char buffer[], char firstname[], char lastname[]);
int
main(void) {
char buffer[BUFFSIZE], firstname[NAMESTRLEN], lastname[NAMESTRLEN];
size_t slen;
printf("Enter first and last name: ");
if (fgets(buffer, BUFFSIZE, stdin) == NULL) {
printf("Error reading into buffer.\n");
exit(EXIT_FAILURE);
}
slen = strlen(buffer);
if (slen > 0) {
if (buffer[slen-1] == '\n') {
buffer[slen-1] = '\0';
} else {
printf("Exceeded buffer length: %d.\n", BUFFSIZE);
exit(EXIT_FAILURE);
}
}
if (!*buffer) {
printf("Nothing entered.\n");
exit(EXIT_FAILURE);
}
separate(buffer, firstname, lastname);
printf("Firstname = %s\n", firstname);
printf("Lastname = %s\n", lastname);
return 0;
}
void
separate(char buffer[], char firstname[], char lastname[]) {
int i;
char *last;
const char sep = ' ';
for (i = 0; buffer[i] != sep; i++) {
firstname[i] = buffer[i];
}
firstname[i] = '\0';
last = strchr(buffer, sep);
last++;
strcpy(lastname, last);
}