1

我有一个执行查询的命令行应用程序。这是代码。需要访问令牌来请求此资源FQL问题

问题是它接收到形式为“abc ... | xyz ...”的访问令牌。有 没有会话部分。但是,返回的令牌无法用于执行我的查询至 为我的页面选择洞察。帮帮我 !!

 const string permissions = "manage_pages,read_insights,offline_access"; 

     dynamic oauthClient = new FacebookOAuthClient() ; 
     oauthClient.AppId = username ; 
     oauthClient.AppSecret = password ; 

     dynamic parameters = new ExpandoObject() ; 
     parameters.scope = permissions ; 
     parameters.response_type = "token" ; 
     // parameters.grant_type = "client_credentials" ; 

     dynamic result = oauthClient.GetApplicationAccessToken(parameters); 
     string token = result.access_token ; 
     // token comes back as "abc...|xyz..." 

     var fb = new FacebookClient(token); 
     string query = " select metric, value " + 
         " from insights " + 
         " where object_id = MY_PAGE and " + 
         "  metric in ('page_impressions' , 'page_stories') and " + 
         "  end_time >= end_time_date('2012-02-21') and " + 
         "  end_time <= end_time_date('2012-02-11') and " + 
         "  period = period('day') " ; 

     dynamic result2 = fb.Query(query) ; // Exception generated on this line. 

     return result2 ; 

任何想法?

+0

BTW - 结束时间的东西剪切和粘贴错误。应该是2012-02-11和2012-02-21之间的结束时间。令牌问题是我现在的问题。 – 2012-02-22 00:23:45

+0

使用Facebook C#SDK v5.0.3 – 2012-02-22 02:43:58

回答

1

你得到的错误是来自Facebook,它只是说你没有一个有效的令牌来提出请求。您必须使用OAuth请求用户访问令牌。之后,你有一个有效的访问令牌,你可以用下面的代码您的要求:

var fb = new FacebookClient("valid_user_access_token"); 
string query = "YOUR FQL QUERY HERE"; 
dynamic result = fb.Query(query); 

要了解如何获得有效的访问令牌读取Facebook的文件位置:https://developers.facebook.com/docs/authentication/

+0

两个问题:它会是一个用户访问令牌还是页面访问令牌?此外,这应该是一个批量应用程序,它定期提供指标,因此我们希望完全消除所有用户登录。有什么办法可以在API中使用FacebookOAuthClient()。GetUserAccessToken(parameters)方法或者FacebookOAuthClient()。GetPageAccessToken(parameters)方法吗? – 2012-02-24 19:16:23

+0

(它定期提取页面度量标准)。因此,App Auth令牌似乎不够用。 – 2012-02-24 19:27:52