发布到Facebook页面作为应用程序;可以这样做吗?

时间:2018-01-25 19:42:45

标签: facebook facebook-graph-api facebook-page

我想知道以下是否可行,因为在阅读FB的文档后我不清楚。这是场景:

网站有撰写文章的作者。作者希望将这些文章的链接分享给有影响力的人(“影响者”)所拥有的FB页面。影响者希望允许网站自动将文章链接发布到他们的页面。网站作者不是FB用户,因此不能要求登录FB。相反,文章链接需要通过网站的FB应用程序共享。这将发生在服务器端。

我知道网站的FB应用程序需要获得发布到影响者页面的权限,但是我不能从网站作者那里请求客户端的这个权限,因为他们不是FB用户。我们可以要求有影响力的人进行一次性设置以允许FB App权限发布到他们的页面,但我担心的是,页面访问令牌似乎会在几个小时后过期,根据文档。

我真正想要的是影响者能够为FB应用程序授予永久访问权限以在其页面上共享链接。这可能吗?

我不一定在寻找代码,只是建议我需要在何时何地进行此设置时执行哪些操作。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想扩展页面访问令牌,以供参考:

public async Task<string> ExtendAccessTokenAsync(string accessToken)
{
    dynamic response = await ExtendAccessTokenAsync<dynamic>(accessToken);

    return response.access_token;
}

private async Task<T> ExtendAccessTokenAsync<T>(string accessToken)
{
    var response = await httpClient.GetAsync($"oauth/access_token?grant_type=fb_exchange_token&client_id={options.AppId}&client_secret={options.AppSecret}&fb_exchange_token={accessToken}");

    if (!response.IsSuccessStatusCode)
    {
        return default(T);
    }

    var result = await response.Content.ReadAsStringAsync();

    return JsonConvert.DeserializeObject<T>(result);
}

T可以是代表返回对象的类(有关属性,请参见FB文档),或者在我的情况下,我只对dynamic使用T,因为我只想使用{ {1}}属性。