此問題之前已被問到,但許多解決方案已被棄用,並且GraphAPI的要求似乎已使許多解決方案無關緊要。 我已經擺弄了fbpy,facebook,oauth,oauth2軟件包,並查看了他們的例子,但仍然無法弄清楚如何讓它工作。我對任何代碼和我一直使用的軟件包都不信任,並且想知道是否有人有任何明確的解決方案,他們知道會起作用。謝謝。如何使用Python和GraphAPI更新FB狀態?
回答
使用facepy一個可能的(測試!)解決方案:
- 創建一個新的application或使用以前創建的現有一個。
- 使用Graph API explorer和應用程序的
status_update
擴展權限生成用戶訪問令牌。 使用在上一步中創建用戶訪問令牌facepy:
from facepy import GraphAPI ACCESS_TOKEN = 'access-token-copied-from-graph-api-explorer-on-web-browser' graph = GraphAPI(ACCESS_TOKEN) graph.post('me/feed', message='Hello World!')
感謝您的摘錄。我實際上嘗試了這個確切的片段。我遇到問題的部分是讓OAuth正常工作。似乎有一個OAuth和OAuth2軟件包,OAuth2是較新的軟件包。除了已經存在的問題,該包已經過時的例子(他們從Oauth導入OAuth,當包的名稱是OAuth2 ...)時,提供的例子似乎過於複雜,對於這樣一個簡單的任務(165行...儘管一大塊這是無可厚非的評論)。沒有能夠把一個有效的oauth_access_token,我仍然想知道我在做什麼錯... –
我用過的短例似乎並沒有完成任務... –
重構答案(測試正確工作)使用「面對面」幷包括如何生成用戶訪問令牌的說明。 –
首先,你需要做的是瞭解login flows。如果你很容易想通過不同的Facebook庫進行切換,你應該知道應該是。因此,它可以有非常詳細的代碼,這是非常簡單的,基於實現。
接下來就是有不同的方法來實現處理OAuth和不同的方式來顯示和啓動您的網絡應用程序在Python中。沒有瀏覽器就無法授權。否則,你將不得不復制粘貼access_token到代碼。
比方說,您選擇web.py
來處理您的Web應用程序演示文稿,requests.py
來處理Graph API HTTP調用。
import web, requests
然後設置,我們希望所有的請求要經過
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
收到
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']
從這裏你可以選擇你想怎麼處理與呼叫更新狀態,例如形式提取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
*發表一個Facebook的照片在Python - 基本調料: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/
謝謝你的詳細和深思熟慮的回覆,phwd。上面你和佩德羅似乎都在使用面容,所以我也會這樣。我試圖快速爲我的朋友提供一些東西,並沒有像我做這件事那樣期望通過文檔來翻閱文檔(在輪詢收件箱中的特定電子郵件後,自動化facebook上的狀態消息)。這比我預期或得到的幫助要多得多;再次感謝! –
您也可以嘗試this博客。它使用fbconsole應用程序。
從博客的代碼:
from urllib import urlretrieve
import imp
urlretrieve('https://raw.github.com/gist/1194123/fbconsole.py', '.fbconsole.py')
fb = imp.load_source('fb', '.fbconsole.py')
fb.AUTH_SCOPE = ['publish_stream']
fb.authenticate()
status = fb.graph_post("/me/feed", {"message":"Your message here"})
這是我如何得到它的工作。你絕對不需要爲此創建任何應用程序。我將介紹如何將狀態更新發布到您的個人資料和您的Facebook頁面。
首先,發佈狀態更新您的個人資料:
轉到https://developers.facebook.com/tools/explorer。
您會在它之前看到帶有Access令牌的文本框。點擊此文本框旁邊的「獲取訪問令牌」按鈕。它會打開一個彈出窗口,詢問您訪問令牌的各種權限。基本上這些權限通過使用此令牌的Graph API來定義您可以執行的操作。選中您需要的所有權限旁邊的複選框,其中一個將更新您的狀態。
現在繼續並安裝麪包模塊。最好的方法是使用pip安裝。
之後填寫Flash在任何.py文件下面的代碼片段:
from facepy import GraphAPI
access_token = 'YOUR_GENERATED_ACCESS_TOKEN'
apiConnection = GraphAPI(access_token)
apiConnection.post(path='me/feed',
message='YOUR_DESIRED_STATUS_UPDATE_HERE')
現在執行這個.py文件標準的Python的方式,檢查你的Facebook。您應該看到已發佈到您的Facebook個人資料。
接下來,做同樣的事情與你的Facebook頁面:
的過程幾乎是完全不同的,用於生成您的訪問令牌相同。
現在你不能使用相同的訪問令牌發佈到你的Facebook頁面。您需要生成一個新的,這對於新來Graph API的人來說可能有點棘手。以下是您需要做的事情:
轉到相同的developers.facebook.com/tools/explorer頁面。
找到顯示'Graph API Explorer'的下拉列表並點擊它。從下拉菜單中選擇您想要發佈更新的頁面。爲此頁面生成一個新的訪問令牌。該過程描述爲here:。不要忘記檢查擴展權限選項卡中的manage_pages權限。
現在,使用與以前使用的代碼相同的代碼並運行它。
轉到您的Facebook頁面。您應該將YOUR_DESIRED_STATUS_UPDATE
發佈到您的頁面。
希望這會有所幫助!
- 1. 如何使用FB SDK 3.1和iOS <6預覽Facebook狀態更新?
- 2. 更新approles使用GraphApi
- 3. 使用FB PHP API發佈狀態更新,新聞饋送
- 4. 使用Python更新Facebook的狀態
- 5. FB如何智能地通知我狀態更新?
- 6. 在FB中使用GraphAPI在Python中發佈照片
- 7. FB圖api:搜索帖子和狀態更新
- 8. 如何使用GraphApi在Android上創建FB相冊
- 9. 如何使用使用JavaScript和GraphAPI
- 10. 使用React更新狀態
- 11. 更新狀態使用codeigniter
- 12. 通過Python和Graphapi
- 13. 在酶不能更新狀態使用實例()。狀態和更新()
- 14. 如何更新狀態欄?
- 15. 狀態如何更新?
- 16. 如何更新Facebook狀態?
- 17. 試圖確定如果用戶使用的FB GraphAPI
- 18. 如何使用C#和ASP.NET更新Facebook狀態?
- 19. 如何使用App引擎創建朋友和狀態更新
- 20. 如何更新用戶的Facebook狀態?
- 21. 如何在UI狀態更改時更新wtf-form狀態?
- 22. 更新狀態
- 23. FB廣告API的狀態,effective_status和廣告實際狀態
- 24. 如何使用react-redux中reducer狀態的值更新組件的狀態?
- 25. 如何評論和喜歡FB的狀態,當我們使用FBGraph API(iphone)
- 26. 獲取fb狀態的like_info
- 27. 如何在PHP中使用hybridauth時更新用戶狀態?
- 28. 使用Rest API + Python更新QC中的測試執行狀態
- 29. JIRA:使用python-jira更新衝刺狀態lib
- 30. 使用pyfacebook進行Facebook狀態更新
如果你有一個類似於file_get_contents的函數,並且知道使用curl,我可以一步一步地告訴你如何去做。由於我不是一個蟒蛇人,我不能給你確切的代碼。如果你開始使用FB,事實上很簡單。 – Kishor