c#mvc 5,facebook登录 - 如何在初始登录后询问额外的用户信息
问题描述:
我们的网站有FB登录,使用Katana项目的库实现。配置FB身份验证时,我将所需的权限字段设置为最小(电子邮件,名字,姓氏)。这是我们网站的标准账户注册,并且工作正常。c#mvc 5,facebook登录 - 如何在初始登录后询问额外的用户信息
但是,我们在网站中有第二种类型的用户,他们的帐户需要更多来自Facebook的数据,与他们的Facebook页面相关,如封面图片,用户帖子,页面描述等。如果用户决定改变他的帐户类型为第二个,我们想从facebook获取更多信息。
我可以以某种方式触发具有不同权限字段集的重新授权FB弹出窗口吗?此时用户使用FB登录,我们只需要更多的权限,就像使用不同的FacebookAuthenticationOptions配置重新登录一样。
答
对于仍在寻找的人,我通过使用Facebook JavaScript API重新登录不同的权限集解决了我的问题。您可以初始化FB Api以允许后续交互:
window.fbAsyncInit = function() {
FB.init({
appId: '[APP_ID_HERE]',
autoLogAppEvents: true,
xfbml: true,
version: 'v2.9',
status: true,
cookie: true,
oauth: true
});
FB.AppEvents.logPageView();
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) { return; }
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
请注意状态,cookie和oauth参数。不确定是否需要所有内容,但是当您使用额外权限重新登录时,它们将使浏览器存储授权令牌,然后您可以通过FB图形API轻松获取数据。通过这种方式,我得到了一个包含我需要的所有数据的json对象,然后通过ajax请求将该json发布到我的网站。这就是Facebook数据如何进入我的应用程序。
如果有人有更好的解决方案,我会很高兴看到它。