Asp.net mvc MVC应用程序不再通过Facebook登录

Asp.net mvc MVC应用程序不再通过Facebook登录,asp.net-mvc,facebook,Asp.net Mvc,Facebook,我一直在使用Facebook附加组件开发一个应用程序,使Facebook用户能够登录并访问个人资料图片等详细信息 昨天,这个应用程序运行得很好,我的开发也在正常进行 今天早上,我试图登录以检查我走了多远,但遇到了一条访问令牌错误消息 单独的局部视图可以加载,但整个站点不会加载。在进一步的调查中,我发现登录屏幕正在分配一个新的访问令牌,但当站点尝试打开母版页时,该令牌为空 我的登录如下:- <html> <head> <title>Log On</ti

我一直在使用Facebook附加组件开发一个应用程序,使Facebook用户能够登录并访问个人资料图片等详细信息

昨天,这个应用程序运行得很好,我的开发也在正常进行

今天早上,我试图登录以检查我走了多远,但遇到了一条访问令牌错误消息

单独的局部视图可以加载,但整个站点不会加载。在进一步的调查中,我发现登录屏幕正在分配一个新的访问令牌,但当站点尝试打开母版页时,该令牌为空

我的登录如下:-

<html>
<head>
  <title>Log On</title>
</head>
<body>
  <div id="fb-root"></div>
  <script type="text/javascript">
    window.fbAsyncInit = function() {
      FB.init({
        appId      : '***app no***',
        status     : true, 
        cookie     : true,
        xfbml      : true,
        oauth      : true
      });

      FB.Event.subscribe('auth.login', function () {
        window.location.reload();
      });
    };

    (function(d){
       var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/en_US/all.js";
       d.getElementsByTagName('head')[0].appendChild(js);
     }(document));
  </script>
  <div class="fb-login-button" data-scope="email">
    Login with Facebook
  </div>
 </body>
 </html>

登录
window.fbAsyninit=函数(){
FB.init({
应用程序ID:“***应用程序编号***”,
状态:正确,
曲奇:是的,
xfbml:是的,
真的吗
});
FB.Event.subscribe('auth.login',函数(){
window.location.reload();
});
};
(职能(d){
var js,id='facebook jssdk';if(d.getElementById(id)){return;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=“//connect.facebook.net/en_US/all.js”;
d、 getElementsByTagName('head')[0].appendChild(js);
}(文件);
使用Facebook登录
这让我头疼

返回的错误是(OAutheException),必须使用活动访问令牌来查询有关当前用户的信息

希望这是足够的信息,有人找到解决方案


非常感谢

您没有设置频道url,即您的网站路径(可以是本地主机或服务器域)


window.fbAsyninit=函数(){
FB.init({
应用程序ID:“***应用程序编号***”,
channelUrl:'//WWW.YOUR_DOMAIN.COM/channel.html',//用于x域通信的通道文件
状态:正确,
曲奇:是的,
xfbml:是的,
真的吗
});

另外,你还必须在developer.facebook.com中设置你的url路径,从中获取你的应用程序id…

好的,发现一些信息表明12月初对facebook SDK所做的更改将导致我的问题。根据给出的建议,我在项目中的facebook引用上运行了引用更新。这已删除从Web.config中删除facebookSettings行,下面的错误消息现在在警告框中出现六次

对类型“Facebook.IFacebookApplication”的引用声明它已定义 在“\packages\Facebook.6.1.4\lib\net40 client\Facebook.dll”中,但 不可能 找到\packages\FacebookWeb.5.4.1.0\lib\net40\Facebook.Web.dll

尝试运行该程序时会产生以下错误

异常详细信息:System.TypeLoadException:无法加载类型 来自程序集“Facebook”的“Facebook.Facebook应用程序”, 版本=6.0.10.0,区域性=中性,PublicKeyToken=58cb4f2111d1e6de'

Source Error: 


Line 12:     public class HomeController : Controller
Line 13:     {
Line 14:         FacebookWebContext FBWebContext = new FacebookWebContext();
Line 15:         FacebookWebClient FBWebClient = new FacebookWebClient();
Line 16:

我知道这有点旧,但这可能会帮助其他人。最终找到了答案。正是在控制器中,我需要以下内容:-

var client = new FacebookClient(Session["FacebookToken"].ToString());    

dynamic me = client.Get("me");

这获得了一个活动令牌,允许我再次访问该信息。

尝试了此操作,但不幸的是,它对结果没有影响。仍然收到相同的错误消息。
var client = new FacebookClient(Session["FacebookToken"].ToString());    

dynamic me = client.Get("me");