使用python中的appsecret_proof参数进行图形api调用的正确方法是什么?有没有图书馆允许这样的事情?
我试图使用'python for facebook'库,但文档实际上是不存在的,所以我无法弄明白。
答案 0 :(得分:10)
以下是使用facebook-sdk:
执行此操作的方法import facebook
import hashlib
import hmac
def genAppSecretProof(app_secret, access_token):
h = hmac.new (
app_secret.encode('utf-8'),
msg=access_token.encode('utf-8'),
digestmod=hashlib.sha256
)
return h.hexdigest()
app_secret = "xxxxxxxxx"
access_token = "xxxxxxxxx"
api = facebook.GraphAPI(access_token)
msg = "Hello, world!"
postargs = {"appsecret_proof": genAppSecretProof(app_secret, access_token)}
status = api.put_wall_post(msg, postargs)
使用Python 2.7.9和facebook-sdk 1.0.0-alpha进行测试。
答案 1 :(得分:1)
在没有facebook SDK的情况下这样做非常简单......关键是,如果您的facebook_app_token
和app_id
与app_secret
相结合,则|
是串联的。 / p>
import hmac,hashlib
facebook_app_id = '<YOUR_APP_ID>'
facebook_app_secret = '<YOUR_APP_SECRET>'
facebook_app_token = '{}|{}'.format(facebook_app_id,facebook_app_secret)
app_secret_proof = hmac.new(facebook_app_secret.encode('utf-8'),
msg=facebook_app_token.encode('utf-8'),
digestmod=hashlib.sha256).hexdigest()
然后,您可以将app_secret_proof包含在您正在调用的任何API中......例如,
import requests
base_url = 'https://graph.facebook.com/v2.10/<USER_ID>/ids_for_pages?access_token={}&appsecret_proof={}'
url = base_url.format(facebook_app_token,app_secret_proof)
result = requests.get(url)
result.json()
答案 2 :(得分:0)
这个问题太旧了,但是我发现了使用此python SDK生成app_secret_proof
的其他方法。
from facebook_business import session
fb_session = session.FacebookSession(app_id, app_secret, access_token)
app_secret_proof = fb_session.appsecret_proof