2015-05-10 2 views
1

Я использую https://developers.facebook.com/tools/access_token/Получить сообщения (Wall Facebook) от меня и моих друзей

Я создаю приложения. Я хочу получить сообщения о стене меня и моих друзей.

Я пробую me/feed и me/posts, но ничего не получаю.

У меня этот модульный тест.

Любые предложения?

[TestMethod] 
    public void Basic_using_SDK() 
    { 
     // http://blog.prabir.me/posts/facebook-csharp-sdk-making-requests 
     var fb = new Facebook.FacebookClient(); 

     var result = (IDictionary<string, object>)fb.Get("4"); 

     var id = (string)result["id"]; 
     var name = (string)result["name"]; 
     var firstName = (string)result["first_name"]; 
     var lastName = (string)result["last_name"]; 
     var link = (string)result["link"]; 
     var username = (string)result["username"]; 
     var gender = (string)result["gender"]; 
     var male = (string)result["locale"]; 


     var parameters = new Dictionary<string, object>(); 
     parameters["fields"] = "id,name"; 

     result = (IDictionary<string, object>)fb.Get("4", parameters); 
     id = (string)result["id"]; 
     name = (string)result["name"]; 


     dynamic result2 = fb.Get("4"); 

     id = result2.id; 
     name = result2.name; 
     firstName = result2.first_name; 
     lastName = result2.last_name; 
     link = result2.link; 
     username = result2.username; 
     gender = result2.gender; 
     male = result2.locale; 


     dynamic parameters2 = new ExpandoObject(); 
     parameters2.fields = "id,name"; 

     dynamic result3 = fb.Get("4", parameters); 
     id = result3.id; 
     name = result3.name; 

     dynamic me = fb.Get("zuck"); 
     firstName = me.first_name; 
     lastName = me.last_name; 


     var client = new FacebookClient(AccessToken); 
     dynamic me2 = client.Get("me"); 
     string aboutMe = me2.about; 

     dynamic result4 = client.Get("/me/feed"); 

     foreach (dynamic post in result4.data) 
     { 
      var fromName = post.from.name; 
      Console.WriteLine(fromName); 
     } 

     dynamic result5 = client.Get("/me/posts"); 
     for (int i = 0; i < result5.Count; i++) 
     { 
     } 


     // https://www.facebook.com/profile.php?id=xxxxxxx 
     // https://graph.facebook.com/xxxxxxx 
     var uidKiquenet = "xxxxx"; 
     var query = string.Format(@"SELECT status_id,message,time,source,uid,place_id 
          FROM status WHERE uid IN (SELECT uid FROM status WHERE uid = '" + uidKiquenet + "') ORDER BY time DESC"); 

     dynamic parameters6 = new ExpandoObject(); 
     parameters6.q = query; 

     dynamic results6 = fb.Get("/xxxxx?fields=id,name,age_range,about,email,first_name,gender"); 


     string myMessage = "Hello from Test"; 

     fb.PostTaskAsync("me/feed", new { message = myMessage }).ContinueWith(t => 
     { 
      if (!t.IsFaulted) 
      { 
       string message = "Great, your message has been posted to you wall!"; 
       Console.WriteLine(message); 
      } 
     }); 

     fb.GetTaskAsync("me").ContinueWith(t => 
     { 
      if (!t.IsFaulted) 
      { 
       var result11 = (IDictionary<string, object>)t.Result; 
       string myDetails = string.Format("Your name is: {0} {1} and your Facebook profile Url is: {3}", 
                (string)result11["first_name"], (string)result11["last_name"], 
                (string)result11["link"]); 
       Console.WriteLine(myDetails); 
      } 
     }); 

     // This uses Facebook Query Language 
     // See https://developers.facebook.com/docs/technical-guides/fql/ for more information. 
     query = string.Format("SELECT uid,name,pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1={0}) ORDER BY name ASC", "me()"); 

     fb.GetTaskAsync("fql", new { q = query }).ContinueWith(t => 
     { 
      if (!t.IsFaulted) 
      { 
       var result1 = (IDictionary<string, object>)t.Result; 
       var data = (IList<object>)result1["data"]; 
       var count = data.Count; 
       var message = string.Format("You have {0} friends", count); 
       Console.WriteLine(message); 

       foreach (IDictionary<string, object> friend in data) 
        Console.WriteLine((string)friend["name"]); 
      } 
     }); 

    } 
+0

Вы знаете, что FQL является устаревшим и не работает в новых приложениях больше, верно? во всяком случае, используете ли вы токен доступа пользователя с правильным разрешением? – luschn

+0

В обзоре статуса ** https: //developers.facebook.com/apps/xxxxx/review-status/** для моего приложения (в разработке) по умолчанию разрешения: *** email, public_profile, user_friends *** – Kiquenet

+0

не уверен, почему вы хотите пройти процесс обзора, хотя, пока ваше приложение еще не закончено ... – luschn

ответ

1

Для того чтобы получить доступ к сообщениям фида, вы должны авторизоваться соответствующим образом. Попробуйте авторизовать с помощью user_posts, как это объясняется в документах: https://developers.facebook.com/docs/graph-api/reference/v2.3/user/feed#read

Знайте, что это не дает вам доступ к сообщениям друзей, если они не размещены на стене авторизованного пользователя.

О обзоре, вы можете прочитать: https://developers.facebook.com/docs/facebook-login/review/faqs#what_is_review

Btw, FQL устарела и будет работать только в v2.0 Apps - не в новых.

1

То же самое произошло со мной. Вот мое решение

Я сделал свой проект зарегистрированным на консоли разработчика Facebook. Затем я сделал свой код таким же, как вы, но не смог получить сообщения/информацию. Через некоторое время я отправил свое приложение для просмотра приложения в facebook team (он все еще находился на ранней стадии разработки), и после их обратной связи я получил свой код. Таким образом, рассмотрение заявки может быть и вашей проблемой. Этот параметр доступен в настройках приложения. Дайте ему выстрелили

Update Другой пример кода здесь

if (Request["code"] == null) 
      { 
       Response.Redirect(string.Format("https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope={2}", 
        FB_app_id, Request.Url.AbsoluteUri, FB_scope)); 
       return false; 
      } 
      else 
      { 
       Dictionary<string, string> tokens = new Dictionary<string, string>(); 
       string url = string.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}&perms=status_update" 
        , FB_app_id, Request.Url.AbsoluteUri, FB_scope, Request["code"].ToString(), FB_secret_id); 
       HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
       using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
       { 

        StreamReader rd = new StreamReader(response.GetResponseStream()); 

        string vals = rd.ReadToEnd(); 
        foreach (string token in vals.Split('&')) 
        { 
         tokens.Add(token.Substring(0, token.IndexOf('=')), token.Substring(token.IndexOf("=") + 1, token.Length - token.IndexOf('=') - 1)); 
        } 
        string access_token = tokens["access_token"]; 
        Session["fb_access_token"] = access_token; 

        return true; 


       } 

      } 
+0

образец на странице ASPX, а не тест устройства? требуется ** Ответ, запрос **? – Kiquenet

+0

Нет проблем с их использованием, и я использую файлы cshtml вместо aspx-файла – ImranNaqvi

Смежные вопросы