MVC应用程序无法通过Facebook登录

3
我一直在使用Facebook的附加组件开发一个应用程序,以便让Facebook用户登录并允许该应用程序访问详细信息,例如个人资料照片。
昨天该应用程序运行良好,我的开发也在正常进行。
今天早上我尝试登录以检查进展情况,但却遇到了“访问令牌错误”的消息。
虽然部分视图可以加载,但整个网站无法加载。经过进一步调查,我发现登录屏幕正在分配新的Access Token,但是当站点试图呈现主页面时,Token已变为空值。
我的登录方式如下:-
<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>

这让我头疼。

返回的错误信息是(OAuthException)必须使用有效的访问令牌来查询有关当前用户的信息。

希望这些信息足够让某人找到解决方案。

非常感谢。

3个回答

0

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

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

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

这个获得了活动令牌,使我能够再次访问信息。


0

您尚未设置频道网址,即您的网站路径(可以是本地主机或服务器域名)

<script type="text/javascript">
window.fbAsyncInit = function() {
  FB.init({
    appId      : '***app no***',
    channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain communication
    status     : true, 
    cookie     : true,
    xfbml      : true,
    oauth      : true
  });

此外,您还需要在developer.facebook.com上设置您的URL路径,该路径是您获取应用程序ID的位置.....


尝试了这个,但不幸的是对结果没有任何影响。仍然收到相同的错误信息。 - Chris Harland

0

好的,我找到了一些信息表明,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”中找不到。

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

Exception Details: System.TypeLoadException: Could not load type 'Facebook.FacebookApplication' from assembly 'Facebook, Version=6.0.10.0, Culture=neutral, 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:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接