如何通过facebook-sdk python api获取用户帖子?

时间:2015-09-29 07:44:04

标签: python facebook facebook-graph-api facebook-javascript-sdk

我使用facebook-jssdk授权我的应用程序对用户个人资料和用户帖子进行读取访问。     

FB.login(
    function(response) { },  
    {scope:'user_status,user_likes,user_photos,user_videos,user_questions,read_stream,user_posts'}
);

然后我正在尝试接收用户帖子。     导入json     从时间导入mktime     来自urllib import urlopen     来自facebook导入GraphAPI     来自datetime import datetime

ga = GraphAPI()
access_token = ga.get_app_access_token(settings.FACEBOOK_APP_ID,     settings.FACEBOOK_APP_SECRET)

url = "https://graph.facebook.com/fql?q=SELECT+created_time+FROM+stream+ WHERE+source_id=%s+AND+created_time<%d&access_token=%s" % (
social_id,   # user id in facebook, taken from facebook-jssdk
int(mktime((datetime.now().timetuple()))),
access_token
)
data = json.loads(urlopen(url).read())
logger.debug(data)
# {u'data': []}


ga = GraphAPI(access_token)
ga.get_object('/508708815952422/posts/', token=token)
# {u'data': []}

数据总是空的......我做错了什么?

有用信息由于“Facebook Login v2.5”权限要求审核才能正常运行。 https://developers.facebook.com/docs/facebook-login/permissions/v2.2

1 个答案:

答案 0 :(得分:5)

你想知道如何使用python api获取用户帖子,对吗?

我在django项目中使用'((prettify-symbols-mode 1))并且让它工作,就像这样(Implementation - services / facebook.py):

{{#each certificates as |cert|}}
<tr>
  <td data-title='Certification'>{{cert}}</td>
</tr>
{{/each}}

注意:在我的情况下,我需要使用客户端凭据流获取访问令牌,如果您将用户登录到您的应用中,则使用密钥和密钥设置已经有你的标记,然后忽略这些行:

facebook-sdk

用法(views.py):

from django.conf import settings
import facebook
import requests

class FacebookFeed:
    token_url = 'https://graph.facebook.com/oauth/access_token'
    params = dict(client_id=settings.SOCIAL_AUTH_FACEBOOK_KEY, client_secret=settings.SOCIAL_AUTH_FACEBOOK_SECRET,
                  grant_type='client_credentials')

    @classmethod
    def get_posts(cls, user, count=6):
        try:
            token_response = requests.get(url=cls.token_url, params=cls.params)
            access_token = token_response.text.split('=')[1]
            graph = facebook.GraphAPI(access_token)
            profile = graph.get_object(user)
            query_string = 'posts?limit={0}'.format(count)
            posts = graph.get_connections(profile['id'], query_string)
            return posts
        except facebook.GraphAPIError:
            return None

希望这有帮助,任何问题,请问=)