【发布时间】:2014-04-10 12:33:30
【问题描述】:
我有一些 PHP 代码:
return base64_encode( hash_hmac( self::HASH_ALGORITHM, $string_to_sign, $this->_consumer_secret, true ) );
我想用 JavaScript 编写它。因为我在Phonegap中构建一个应用程序,PHP在Phonegap中不起作用。
我试过这个:
var hash = CryptoJS.HmacSHA256(HASH_ALGORITHM,string_to_sign,consumer_secret);
var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
return hashInBase64;
这里是生成签名的php代码
public function generate_oauth_signature( $params, $http_method, $endpoint ) {
$base_request_uri = rawurlencode( $this->_api_url . $endpoint );
// normalize parameter key/values and sort them
array_walk( $params, array( $this, 'normalize_parameters' ) );
uksort( $params, 'strcmp' );
// form query string
$query_params = array();
foreach ( $params as $param_key => $param_value ) {
$query_params[] = $param_key . '%3D' . $param_value; // join with equals sign
}
$query_string = implode( '%26', $query_params ); // join with ampersand
// form string to sign (first key)
$string_to_sign = $http_method . '&' . $base_request_uri . '&' . $query_string;
return base64_encode( hash_hmac( self::HASH_ALGORITHM, $string_to_sign, $this->_consumer_secret, true ) );
}
所以请任何人都可以帮助我。
【问题讨论】:
-
也许phpjs可以帮忙:phpjs.org
-
我已经试过了
-
你尝试
base64_encodephpjs.org/functions/base64_encode 和hash_hmac来自stackoverflow.com/questions/12099092/… 吗? -
@UmNyobe 我回滚了来自 sulthan 的编辑
-
@感谢 Icarus,我正要这样做。
标签: javascript php jquery cordova