facebook图api用python中的appsecret_proof调用

时间:2014-10-08 02:00:56

标签: python facebook-graph-api app-secret

使用python中的appsecret_proof参数进行图形api调用的正确方法是什么?有没有图书馆允许这样的事情?

我试图使用'python for facebook'库,但文档实际上是不存在的,所以我无法弄明白。

3 个答案:

答案 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_tokenapp_idapp_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