繁体   English   中英

使用 Python 中的 Graph API 将 Facebook 页面的点赞数返回到我的 .html 页面

[英]Returning the number of likes of a facebook page using Graph API in Python to my .html page

我必须在用 Django 构建的网站的主页中显示我的 facebook 页面的关注者数量。

(我之前只内置了 rails,所以我是 python/danjo 的真正菜鸟,我已经坚持了两个星期)。

我一直在使用这个代码这篇文章

import urllib2
import json

def get_page_data(page_id,access_token):
    api_endpoint = "https://graph.facebook.com/v2.4/"
    fb_graph_url = api_endpoint+page_id+"?fields=id,name,likes,link&access_token="+access_token
    try:
        api_request = urllib2.Request(fb_graph_url)
        api_response = urllib2.urlopen(api_request)

        try:
            return json.loads(api_response.read())
        except (ValueError, KeyError, TypeError):
            return "JSON error"

    except IOError, e:
        if hasattr(e, 'code'):
            return e.code
        elif hasattr(e, 'reason'):
            return e.reason

page_id = "idiotinside" # username or id
token = "TOKEN"  # Access Token
page_data = get_page_data(page_id,token)

print "Page Name:"+ page_data['name']
print "Likes:"+ str(page_data['likes'])
print "Link:"+ page_data['link']

它在控制台上打印得很好,但是当我尝试将它返回到 fb.html 时,我得到:

IndentationError at / 意外缩进(views.py,第 67 行)

当我尝试在同一级别的打印“Link:”+ page_data['link']上缩进它时,我得到:

SyntaxError at / 'return' 外部函数(views.py,第 67 行)

如果我像这样缩进所有内容:

def get_page_data(page_id,access_token):

  import ipdb; ipdb.set_trace()    

   api_endpoint = "https://graph.facebook.com/v2.4/"
   fb_graph_url = api_endpoint+page_id+"?fields=id,name,likes,link&access_token="+access_token

   try:
       api_request = urllib2.Request(fb_graph_url)
       api_response = urllib2.urlopen(api_request)

       try:
           return json.loads(api_response.read())
       except (ValueError, KeyError, TypeError):
           return "JSON error"

   except IOError, e:
       if hasattr(e, 'code'):
           return e.code
       elif hasattr(e, 'reason'):
           return e.reason
   import ipdb; ipdb.set_trace()

   page_id = "xxxxxxxxx" # username or id
   token = "xxxxx"  # Access Token
   page_data = get_page_data(page_id,token)

   print "Page Name:"+ page_data['name']
   print "Likes:"+ str(page_data['likes'])
   print "Link:"+ page_data['link']

   return render_to_response(page_data['name'], str(page_data['likes']), page_data['link'])

def get_page_data下的那个ipdb甚至不会被解雇。

我尝试通过使用 facebook-sdk 0.4.0 和 fb 0.2.0 来寻找替代解决方案,但对于像我这样的初学者来说,它们的文档不够清晰/类似于教程。

请帮助任何种类的帮助将不胜感激...

我得到了一位高级开发人员的帮助,这是解决方案:

首先设置您的网址:

url(r'^(?P<page_name>fb)/$', 'pages.views.facebook_page', name='facebook-page'),

然后在 pages/views.py 中:

def facebook_page(request, page_name):
page_id = ".............." # username or id
token = "................"  # Access Token
context = get_page_data(page_id,token)

return  render_to_response('pages/fb.html', context, context_instance=RequestContext(request))

def get_page_data(page_id,access_token):
api_endpoint = "https://graph.facebook.com/v2.4/"
fb_graph_url = api_endpoint+page_id+"?fields=id,name,likes,link&access_token="+access_token

try:
    api_request = urllib2.Request(fb_graph_url)
    api_response = urllib2.urlopen(api_request)

    try:
        return json.loads(api_response.read())
    except (ValueError, KeyError, TypeError):
        return "JSON error"

except IOError, e:
    if hasattr(e, 'code'):
        return e.code
    elif hasattr(e, 'reason'):
        return e.reason

它可以在这样的视图中调用:

<li class="social"><h3>Likes: {{likes}}</h3></li>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM