![](/img/trans.png)
[英]Count likes on a Facebook post using Python+Facebook Graph API
[英]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.