帮助在Python中生成Facebook API“Sig”

时间:2010-02-15 06:25:56

标签: python google-app-engine facebook

我一直在为此奋斗超过两天,我可以帮助你。这是问题所在:

每当向Facebook REST服务器发出请求时,我们都必须发送一个名为“sig”的附加参数。此签名使用以下算法生成:

<?php

$secret = 'Secret Key'; // where 'Secret Key' is your application secret key 
$args = array(
'argument1' => $argument1,
'argument2' => $argument2); // insert the actual arguments for your request in place of these example args 
$request_str = '';
foreach ($args as $key => $value) {
$request_str .= $key . '=' . $value; // Note that there is no separator.
}
$sig = $request_str . $secret;
$sig = md5($sig);

?>

有关此内容的更多信息:http://wiki.developers.facebook.com/index.php/How_Facebook_Authenticates_Your_Application

我一直在尝试用Python重现这段代码,这是我的尝试:

def get_signature(facebook_parameter):
    sig = ""
    for key, value in facebook_parameter.parameters:
        sig += key + "=" + value
    sig += facebook_parameter.application_secret
    return hashlib.md5(sig).hexdigest()

facebook_paremeter.parameters是一个如下所示的列表:

[('api_key', '...'), ('v', '1.0'), ('format', 'JSON'), ('method', '...')]

和facebook_paremeter.application_secret是一个有效的应用秘密。

此代码在Google App Engine开发平台上运行(如果这有任何区别)。 Python 2.6.4。


有人可以帮我找出我的代码出错的地方吗?

谢谢, 斯

1 个答案:

答案 0 :(得分:1)

必须对列表进行排序。