Я боролся с этим более двух дней, и я мог бы использовать вашу помощь. Вот проблема:
Всякий раз, когда делается запрос на REST-сервер Facebook, мы должны отправить дополнительный параметр, называемый "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.
Может кто-нибудь помочь мне выяснить, где мой код работает неправильно?
Спасибо,
Шри