MVC App不再通过Facebook登录

时间:2012-12-06 16:41:29

标签: asp.net-mvc facebook

我一直在开发一个使用Facebook添加的应用程序,以使Facebook用户能够登录,并且应用程序可以访问个人资料图片等详细信息。

昨天该应用程序运行正常,我的开发工作正常进行。

今天早上我尝试登录以查看我已经走了多远,并遇到了Access 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 :(得分:0)

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

<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中设置您的网址路径,从那里获得您的app-id .....

答案 1 :(得分: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

并且在尝试运行程序时产生以下错误

  

异常详细信息:System.TypeLoadException:无法加载类型   来自汇编'Facebook的'Facebook.FacebookApplication',   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:

答案 2 :(得分:0)

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

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

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

这有一个活动的令牌,允许我再次访问该信息。