【问题标题】:Facebook API get public profile wall postsFacebook API 获取公开个人资料墙帖子
【发布时间】:2013-09-02 16:05:26
【问题描述】:

我正在用 c# 制作一个小部件,以便从公共 facebook 页面/个人资料中获取帖子。

我相信您每次向 api 发出请求时都必须获取访问令牌?

我不知道我需要哪个访问令牌以及要使用哪个 url 请求字符串。

这是我目前正在使用的,但它带回了一个意想不到的键。 access_token=112121212121212|NxG_8djeufhfywhduEjaeU4J-lh4

(我输入了随机字符作为结构示例)。

string response = "https://graph.facebook.com/oauth/access_token?client_id=" + facebook_AppID + "&client_secret=" + facebook_AppSecret + "&grant_type=client_credentials";
string accesstoken = RequestResponse(response);

然后,当我使用该代码从墙上获取帖子时,使用:

string urlGetFeed = "https://graph.facebook.com/thepagename?fields=access_token=" + accesstoken2 + ",posts.fields(message,picture)";

我得到一个错误:远程服务器返回一个错误:(400)错误请求。错误。

【问题讨论】:

  • 你试过 facebook sdk 吗?

标签: c# facebook facebook-graph-api


【解决方案1】:

对于 Facebook 主页的 feed,您只需要一个 App Access Token,很容易获得:

APP-ID|APP-SECRET

例如:

string urlGetFeed = "https://graph.facebook.com/thepagename/feed?access_token=" + [app-id] + "|" + [app-secret];

此外,访问令牌不是“字段”的值,它是一个单独的参数。

【讨论】:

  • 返回:“不支持的获取请求。”
【解决方案2】:

您应该使用的网址是:

https://graph.facebook.com/[THE_FACEBOOK_ID]/[WHAT_YOU_WANT]?access_token=[YOUR_ACCESS_TOKEN]&limit=[THE_LIMIT]

第一部分访问 Facebook 图表。 第二部分是您想要的 Facebook Id。 第三部分是您想要从您输入的 Facebook Id 中获得的东西(帖子、提要、活动等)。在这里,您必须确保访问令牌具有您想要获取的权限。 第四部分是你获得的Access Token和限制(如果你不设置限制,将使用Facebook的默认限制)。

请注意您发布的第一行代码所获得的访问令牌。该行将为您提供一个短暂的实时访问令牌。您应该在此处交换短期访问令牌:

https://graph.facebook.com/oauth/access_token?client_id=[YUOR_CLIENT_ID]&client_secret=[YOURCLIENT_SECRET]&grant_type=fb_exchange_token&fb_exchange_token=[THE_SHORT_LIVE_ACCESS_TOKEN]

编辑: 您应该做的是包含 FB Connect 脚本:

<script type='text/javascript' src='http://connect.facebook.net/en_US/all.js#xfbml=1'</script>

然后使用这个功能将用户带到FB登录(如果没有登录),然后到授权页面:

function createAccessToken()
{
FB.init({appId: '[YOUR APP ID]', status: true, cookie: true});
FB.login(function(response)
{
    if (response.status == 'connected')
    {
        if (response.authResponse.accessToken)
        {
            var token = response.authResponse.accessToken;
        }
        else
        {
            alert('You must grant the permissions for this plugin or will not work.');
        }
    }
    else
    {
        alert('You must be logged in to Facebook to grant permissions.');
    }
}, { scope: 'read_stream' }); }

该函数内的令牌变量将包含短期访问令牌,以在此处交换长期访问令牌:

https://graph.facebook.com/oauth/access_token?client_id=[YOUR_CLIENT_ID]&client_secret=[YOURCLIENT_SECRET]&grant_type=fb_exchange_token&fb_exchange_token=[token]

一旦你得到了那个令牌,就去这里得到你想要的:

https://graph.facebook.com/[THE_FACEBOOK_ID]/[WHAT_YOU_WANT]?access_token=[YOUR_ACCESS_TOKEN]&limit=[THE_LIMIT]

【讨论】:

  • 然后给我错误:{ "error": { "message": "Invalid OAuth access token signature.", "type": "OAuthException", "code": 190 } } 有我必须在应用设置上设置一些权限?
  • 很抱歉,我没有看到您正在获取应用程序令牌,这就是为什么您无法延长该令牌的寿命,但该令牌对用户操作毫无用处。
猜你喜欢
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多