0

我的網址是像下面...面對的問題,而試圖獲取訪問令牌需要爲Facebook

http://localhost:1561/Facebook/Facebook/MainPage 

控制器類

public class FacebookController : Controller 
{ 
    public ActionResult MainPage() 
    { 
     return View(); 
    } 

    public PartialViewResult ShowMyDetails() 
    { 
     return PartialView("FacebookUserControl"); 
    } 

    [CanvasAuthorize(Permissions = "user_about_me, publish_stream")] 
    public ActionResult GetMyDetails() 
    { 
     var fb = new FacebookClient(); 
     dynamic CurrentUser = fb.Get("100003533388420"); 
     User user = new User 
     { 
      id = CurrentUser.id, 
      first_name = CurrentUser.first_name, 
      gender = CurrentUser.gender, 
      last_name = CurrentUser.last_name, 
      name = CurrentUser.name, 
      username = CurrentUser.username 
     }; 
     return Json 
     (
      user, 
      JsonRequestBehavior.AllowGet 
     ); 
    } 
} 

我沒有任何Facebook在與我Web.Config中。

問題 - 如果我添加下面提到的行。我面臨的問題「settings.AppId爲空

[CanvasAuthorize(Permissions = "user_about_me, publish_stream")] 

回答

0
public ActionResult GetFriendsDetails() 
{ 
    List<User> UserList = new List<Models.User>(); 
    var fb = new FacebookClient("MyAppID", "MySecret"); 
    //This will give the Access Token 
    dynamic FriendsList = fb.Get("MyAppID/friends"); 
    foreach (var item in FriendsList.data) 
    { 
     dynamic CurrentUser = fb.Get(item.id); 
     UserList.Add 
     (
      new User 
      { 
       id = CurrentUser.id, 
       first_name = CurrentUser.first_name, 
       gender = CurrentUser.gender, 
       last_name = CurrentUser.last_name, 
       name = CurrentUser.name, 
       username = CurrentUser.username 
      } 
     ); 
    } 
    return Json 
    (
     UserList, 
     JsonRequestBehavior.AllowGet 
    ); 
} 
0

讓我先說,我還沒有在畫布上的應用程序工作之前前言本,所以不能確定的差別是什麼。

但是,當創建FacebookClient時,您需要提供accessToken。

 public ActionResult LoginFacebookAuth(string access_token) 
     { 
      var accessToken = access_token; 

      try 
      { 
       var facebookClient = new Facebook.FacebookClient(accessToken); 

       dynamic me = facebookClient.Get("me"); 
       var fbUserId = me.id.ToString(); 
       var email = me.email.ToString(); 

... 

另外,在web.config中,我確實有條目。在查看

<appSettings> 
    <add key="FbAppId" value="" /> 

代碼,在經過的access_token:

window.fbAsyncInit = function() { 
       FB.init({ 
        appId: '{FbAppId from web.config}', 
        status: true, // check login status 
        cookie: true, // enable cookies to allow the server to access the session 
        xfbml: true // parse XFBML 
       }); 
      }; 
      $(document).ready(function() { 
       $('body').append('<div id="fb-root" name="fb-root"></div>'); 
       $('.fbLoginLink') //When my fb icon is clicked, call FbLogin 
        .click(function(e) { 
         e.preventDefault(); 
         FbLogin(); 
        }); 


      }); 
      // Load the SDK Asynchronously 
      (function(d) { 
       var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
       if (d.getElementById(id)) { 
        return; 
       } 
       js = d.createElement('script'); 
       js.id = id; 
       js.async = true; 
       js.src = "//connect.facebook.net/en_US/all.js"; 
       ref.parentNode.insertBefore(js, ref); 
      }(document)); 

      function FbLogin() { 
       FB.login(
        function(response) { 
         if (response.authResponse) { 
          var uid = response.authResponse.userID; 
          var accessToken = response.authResponse.accessToken; 
          window.location = '@Url.RouteUrl("LoginFacebookAuth", new { })?accessToken=' + accessToken + '&uid=' + uid; 
         } else { 
          window.location = '/'; //User cancelled authorization 
         } 
        }, 
        { scope: 'email,user_birthday' } 
       ); //FB.login 
      } 
+0

?我怎樣才能ACCESS_TOKEN? – SMC 2013-03-04 18:09:13

+0

我已經添加了在視圖中使用的代碼。由於您擁有畫布應用程序,因此不太確定它與您的不同之處。 – 2013-03-04 18:17:31

+0

感謝您的幫助。我可以分享一個我正試圖完成的觀點嗎?其實我第一次登錄Facebook就像我們打開Facebook網站......然後我打開我的示例應用程序。我的問題是有佔用令牌值的會話。所以我可以直接從我的示例應用程序訪問它,而無需再次登錄? – SMC 2013-03-04 18:36:53