- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如何使用 Python 和 GraphAPI 更新 FB 状态?以前有人问过这个问题,但许多解决方案已被弃用,而且 GraphAPI 的要求似乎使许多解决方案变得无关紧要。
我摆弄过 fbpy、Facebook、OAuth 和 oauth2 包,并查看了它们的示例,但我仍然无法弄清楚如何让它们工作。我不信任我一直在使用的任何代码或软件包,并且想知道是否有人有任何他们知道可行的明确解决方案。
最佳答案
首先你需要做的是了解login flows .如果您想轻松切换不同的 Facebook 库,您应该了解。因此,基于实现,它可以有非常冗长的代码和非常简单的代码。
接下来是有不同的方式来实现处理 OAuth 以及不同的方式来显示和启动 Python 中的网络应用程序。不点击浏览器就无法授权。否则,您将不得不继续将 access_token 复制粘贴到代码中。
假设您选择 web.py
来处理您的网络应用演示,并选择 requests.py
来处理 Graph API HTTP 调用。
import web, requests
然后设置我们希望所有请求通过的 URL
url = (
'/', 'index'
)
现在获取您要使用的应用程序 ID、密码和登录后 URL
app_id = "YOUR_APP_ID"
app_secret = "APP_SECRET"
post_login_url = "http://0.0.0.0:8080/"
此代码将有一个类 index
来处理逻辑。在这个类中,我们要处理授权 code
Facebook 将在登录后返回
user_data = web.input(code=None)
code = user_data.code
从这里设置一个条件来检查code
if not code:
# we are not authorized
# send to oauth dialog
else:
# authorized, get access_token
在“未授权”分支中,将用户发送到对话框
dialog_url = ( "http://www.facebook.com/dialog/oauth?" +
"client_id=" + app_id +
"&redirect_uri=" + post_login_url +
"&scope=publish_stream" )
return "<script>top.location.href='" + dialog_url + "'</script>"
否则我们可以使用收到的code
提取access_token
token_url = ( "https://graph.facebook.com/oauth/access_token?" +
"client_id=" + app_id +
"&redirect_uri=" + post_login_url +
"&client_secret=" + app_secret +
"&code=" + code )
response = requests.get(token_url).content
params = {}
result = response.split("&", 1)
for p in result:
(k,v) = p.split("=")
params[k] = v
access_token = params['access_token']
从这里您可以选择如何处理更新状态的调用,例如表单,
graph_url = ( "https://graph.facebook.com/me/feed?" +
"access_token=" + access_token )
return ( '<html><body>' + '\n' +
'<form enctype="multipart/form-data" action="' +
graph_url + ' "method="POST">' + '\n' +
'Say something: ' + '\n' +
'<input name="message" type="text" value=""><br/><br/>' + '\n' +
'<input type="submit" value="Send"/><br/>' + '\n' +
'</form>' + '\n' +
'</body></html>' )
或者使用face.py
from facepy import GraphAPI
graph = GraphAPI(access_token)
try:
graph.post(
path = 'me/feed',
message = 'Your message here'
)
except GraphAPI.OAuthError, e:
print e.message
所以最后你可以得到一个像这样的精简版
import web
from facepy import GraphAPI
from urlparse import parse_qs
url = ('/', 'index')
app_id = "YOUR_APP_ID"
app_secret = "APP_SECRET"
post_login_url = "http://0.0.0.0:8080/"
user_data = web.input(code=None)
if not user_data.code:
dialog_url = ( "http://www.facebook.com/dialog/oauth?" +
"client_id=" + app_id +
"&redirect_uri=" + post_login_url +
"&scope=publish_stream" )
return "<script>top.location.href='" + dialog_url + "'</script>"
else:
graph = GraphAPI()
response = graph.get(
path='oauth/access_token',
client_id=app_id,
client_secret=app_secret,
redirect_uri=post_login_url,
code=code
)
data = parse_qs(response)
graph = GraphAPI(data['access_token'][0])
graph.post(path = 'me/feed', message = 'Your message here')
更多信息见
* Facebook API - 用户订阅:http://developers.facebook.com/docs/reference/api/user/#feed
* 在 Python 中发布 Facebook 照片——基础知识:http://philippeharewood.com/facebook/publish-a-facebook-photo-in-python-the-basic-sauce/
* Facebook 和 Python – 基础知识:http://philippeharewood.com/facebook/facebook-and-python-the-basic-sauce/
关于python - 如何使用 Python 和 GraphAPI 更新 FB 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372528/
我有问题,我想在那个应用程序中使用 FB 好友列表,我可以通过 FB SDK 检索 FB 好友列表...... 最佳答案 FB SDK 支持通过以下方式调用 FB graph api: - (FBRe
我有一个简单的视频,最后包含一个共享按钮,当用户单击共享按钮时,会打开一个带有社交媒体图标的模态框,例如用户可以将视频共享到 Facebook,现在我想要来自 Facebook 的回调响应视频分享后。
我收到常见的 JS 错误“ Uncaught ReferenceError :未定义 FB” 关于同一个问题有很多问题,我已经尝试了每个可用的解决方案 stackoverflow 但无济于事。显然,人
你好,我想知道如果我创建了一个 Facebook 页面(没有普通用户)是否可以获得 FB APP_ID,或者这个 ID 仅用于应用程序?谢谢 最佳答案 如果您是 Facebook 用户,请登录您的 I
我有一个客户已经有一个与他们自己的网站相关联的 Facebook 页面。我最终说服他们将开放图标签集成到他们的页面中,因为当任何人点击他们网站上的 Facebook Like 按钮时,它在 Faceb
我的问题很简单,FB Messenger如何知道谁与其他FB应用程序连接,我的意思是在iOS中,应用程序使用sandBox,但是当您在“正常”应用程序中作为“xy”连接并且打开Messenger时它会
这段最近工作完美的代码在与 FB JS API 一起使用时不再正常工作: placeOrder : function(order_info) { var onOrderPlaced = funct
我正在尝试从我使用以下代码的 facebook 广告 api 获取广告系列列表 $account = new AdAccount('act_' . $account_id);
我的控制台中有这条消息 FB.getLoginStatus() called before calling FB.init(). 我的代码 // Load the SDK Asyn
我知道有很多关于 Facebook 访问 token 的问题及其造成的痛苦,但尽管进行了大量实验并阅读了许多令人沮丧的模糊博客文章(FB 和其他),我仍在努力获得明确的答案根据我的需要。让我简要地分解
我查看了有关 stackoverflow 的各种文档和问题,但仍然无法弄清楚为什么以下代码不会触发任何 FB.Event.subscribe 事件 getLoginStatus。 (fun
我想要实现的是: 我有一个简单的 Facebook 分享按钮,取自 Facebook 开发人员。站点: 现在我在开始正文标记之前添加了同样取自 facebook 的 facebook 应用程序代码:
我想检查用户是否使用 Facebook JavaScript JDK 和 jQuery 登录 facebook。但即使超时 10 秒,我也会收到此错误消息: 在调用 FB.init() 之前调用 FB
我有一个正在编写的网站。 javascript SDK 有效 php SDK 有效 HTML 如下所示: 带有 fb-registration div 的注册页面 带有 fb-login-button
我正在尝试检查用户是否已使用我的应用登录,但我收到了 FB.getLoginStatus() called before calling FB.init(). 控制台出错。 setSize似乎有效(虽
FB.api 在 FB.init 之后立即调用时不起作用。这是我使用的代码片段: window.fbAsyncInit = function() { FB.init({ appId : w
我希望用户在单击我网页上的几个按钮之一时能够将一些图像发布到他们的 Facebook 页面。 FB.getLoginStatus(function(response) { if ( respon
我正在使用 PFFacebookUtils.logInWithPermissions 登录我的应用程序,但是,第一次登录实际登录工作正常,但出现 FB 错误 code = 2500 An active
我全新的工作充满了美妙和可怕的惊喜。这项工作最有趣的部分之一是增强、加速、使一切规模化的意愿。今天,第一个真正的问题。事情是这样的:我们得到最多 20 个列表元素,每个元素都显示自己的 Faceboo
我在这里使用 asp.net web 应用程序,我在我的网页中使用 2 个 facebook 插件。 Facebook 赞 Facebook 分享 对于 facebook 分享: Faceboo
我是一名优秀的程序员,十分优秀!