6

私はfacebook-jssdkを使って、自分のアプリケーションにユーザープロファイルとユーザー投稿への読み取りアクセスを許可します。 facebook-sdk python apiでユーザーの投稿を取得するには?

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

次に、ユーザーの投稿を受信しようとしています。日時インポート日時

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の輸入GraphAPI から urlopen urllibはインポートから時間インポートはmktime から 輸入JSON は私が間違っているのは何...常に空ですか?

お役立ち情報"FacebookログインのV2.5" のパーミッションが正しく機能するために見直しを必要とするので。 https://developers.facebook.com/docs/facebook-login/permissions/v2.2

+0

)=お尋ねください古い例から働いていますか?新しく作成されたアプリケーションはFQLにアクセスすることはできず、上記の多くの権限は現在のバージョンのAPIには存在しません – Igy

+0

私は古い例と新しい例から作業しています。 user_posts権限がグラフapiに存在する:http://i.imgur.com/H1xiO6Z.jpg例えばFQLだけを示しています - それでもうまくいきません... –

答えて

5

あなたはPython APIを使用してユーザーの投稿を取得する方法を知りたいですか?

この(実装 - サービス/ facebook.py)のように、私はDjangoプロジェクト内facebook-sdkを使用していると私はそれが動作するようになった:

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 

注:を私の場合は、フェッチする必要があります

token_response = requests.get(url=cls.token_url, params=cls.params) 
access_token = token_response.text.split('=')[1] 

:その後、行を無視し、あなたがあなたのアプリにユーザーをログに記録し、すでにあなたの側にトークンを持っている場合、クライアント証明書が、鍵と秘密の設定を利用して、流れ使用してアクセストークン使用法(views.py):

from django.http import HttpResponse 
from app.services.social_networks.facebook import FacebookFeed 

def get_facebook_posts(request, user): 
    posts = FacebookFeed.get_posts(user=user) 
    if not posts: 
     return HttpResponse(status=500, content="Can't fetch posts for desired user", content_type="application/json") 
    return HttpResponse(json.dumps(posts), content_type="application/json") 

希望これは、すべての問題を助け、

+0

私はいつも空のデータを取得しています...問題。 [13]:FacebookFeed.get_posts(user = '100000153778906') Out [13]:{u'data ':[]} –

+0

ああ、私はユーザー名を使ってデータを取得しています。 id '100000153778906'ではなく、そのidに関連付けられたユーザー名です。私は今それをテストする立場にはいませんが、私はその日の後半にそれに着きます。 – jlnabais

+1

私は理由を見つけたと思う - 私のアプリケーションはuser_posts権限を使用するためにfacebookによって許可されていませんでした。私は承認プロセスを開始したので、テストしないでください。私は間違いなくその権限が必要です。ご協力ありがとうございました。 –

関連する問題