从JavaScript页面获取最新帖子作为JavaScript中的字符串

时间:2015-11-23 04:29:28

标签: javascript facebook facebook-graph-api

我只需要从特定的Facebook页面获取最新帖子作为网站JavaScript的字符串。我从来没有使用过Facebook API,而且我仍然是JavaScript的新手,经过多次尝试我无法弄清楚问题是什么......

到目前为止,这是我所做的一切:

  • 创建了一个Facebook应用程序,为平台选择了“网站”
  • 将我从Facebook获得的JavaScript SDK代码插入到我的网站代码中,并将占位符'appID'替换为我的Facebook应用中的'App ID'
  • 成为Facebook页面的管理员
  • 在Graph API资源管理器页面上,使用“获取令牌”下拉列表选择“获取页面访问令牌”,然后选择显示在下拉列表中的Facebook页面
  • 在图谱API资源管理器中使用了以下请求:“https://www.facebook.com/pagenamehere/?fields=posts.limit(1)”(输出提供了我需要的帖子,但有一些额外信息,如“create_time”,“id”等,我很可能会删除在JavaScript中除非有更精确的请求我可以使用,因为我只需要“message”)
  • 从“获取代码”中复制提供的JavaScript代码,并将其插入JavaScript SDK代码
  • 用'alert(response)'替换'//在此处插入您的代码',警告消息为:[object Object]

我不知道如何从'[object Object]'获取“消息”,或者我没有得到我需要的响应。我试图通过实时服务器上的网页进行此操作。

请帮助,我没有想法,我已经多次阅读Facebook API。

提前致谢。

2 个答案:

答案 0 :(得分:0)

这很简单。只需查看Graph API Explorer,您就会明白如何访问sharedInstance属性:

use of unresolved identifier sharedInstance的调用将返回

func addSData(favBuddy: favorites) -> Bool {
    sharedInstance.database!.open()
    let isInserted = sharedInstance.database!.executeUpdate("INSERT INTO favorties (eName, eEmail) VALUES (test, test)", withArgumentsInArray: [favorties.eName, favorties.eMail])
    sharedInstance.database!.close()
    return isInserted
}

这意味着

from collections import Counter, defaultdict
from itertools import izip, tee

#function from 'recipes section' in standard documentation itertools page
def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)

text = [{'ideology': 3.4, 'ID': '50555',
 'reviews': 'Politician from CA-21, very liberal and aggressive'},
 {'ideology': 1.5, 'ID': '10223',
 'reviews': 'Retired politician'} ]

c = Counter()
for l in text:
   c.update(pairwise(l['reviews'].split()))

print c.items()

应该打印message

答案 1 :(得分:0)

感谢您的建议,他们帮助我指明了正确的方向,并且我能够让它发挥作用。

以下是我需要的原始帖子中缺少的步骤:

  • 还必须将我的域名添加到“我的应用”中的“有效OAuth重定向URI”字段中 - > '设置' - > '高级'

  • 我的访问令牌必须包含在Graph API Explorer生成的代码中,就像this post中的答案一样: (您的用户访问令牌应在“访问令牌工具”页面中通过单击“调试” - >>“扩展访问令牌”并在代码中使用此令牌延长至60天

  • Facebook SDK需要在执行从Graph API资源管理器生成的代码之前完成加载,我使用了this question的Mohammed Arif的回答来做到这一点,但是我不得不使用延迟来运行它。我把他的代码放在一个在200ms setTimeout之后运行的函数中,如果加载了从Graph API Explorer生成的代码,那么我再次在200ms setTimeout之后运行该函数。

  • Tobi对部分问题(获取消息)的回答几乎是正确的:response.data [0] .message;