2

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

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

4

3 回答 3

14

以下是使用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 测试。

于 2015-04-15T08:48:57.213 回答
2

在没有 facebook SDK 的情况下执行此操作非常简单......关键是facebook_app_token如果您的app_idapp_secret|.

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()

然后你可以在你调用的任何 API 中包含 app_secret_proof ......例如,

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()
于 2017-08-29T09:54:11.877 回答
1

这个问题太老了,但我找到了app_secret_proof使用这个 python SDK生成的其他方法。

    from facebook_business import session
    fb_session = session.FacebookSession(app_id, app_secret, access_token)
    app_secret_proof = fb_session.appsecret_proof
于 2020-06-25T05:59:01.920 回答