Java 如何在GAE/J上创建OAuth HMAC-SHA1签名?
编辑:Java 如何在GAE/J上创建OAuth HMAC-SHA1签名?,java,google-app-engine,oauth,hmac,Java,Google App Engine,Oauth,Hmac,编辑: (好吧,希望能在上午试一下。) 我的理解是,要创建签名,我需要一个“基本字符串”和一个“密钥”。我想我知道如何创建基本字符串,并且我假设我应该使用Google分配给我的应用程序的“OAuth Consumer Secret”作为密钥 但是我该怎么处理这两个人才能得到签名呢?GAE/Java上有HMAC类吗 如果我把为我产生的东西储存在某个地方,它会播放吗?你是怎么做的?或者OAuth签名是否有过期日期 (我以前尝试过AuthSub,但尽管它看起来很简单。而且OAuth对我来说更“标准”,
(好吧,希望能在上午试一下。) 我的理解是,要创建签名,我需要一个“基本字符串”和一个“密钥”。我想我知道如何创建基本字符串,并且我假设我应该使用Google分配给我的应用程序的“OAuth Consumer Secret”作为密钥 但是我该怎么处理这两个人才能得到签名呢?GAE/Java上有HMAC类吗 如果我把为我产生的东西储存在某个地方,它会播放吗?你是怎么做的?或者OAuth签名是否有过期日期
(我以前尝试过AuthSub,但尽管它看起来很简单。而且OAuth对我来说更“标准”,所以我想坚持使用OAuth。)出于某种原因,Quercus和GAE上的hmac_init给出了错误。一种解决方案是使用上述java方法和类,将其导入PHP实例并调用compute 1) 添加您还没有的scr/phpgae目录id 2) 将phpgae.HmacSHA256行添加到src/WEB-INF/services/com.caucho.QuercusModule 3) 将scr/phpgae/HmacSHA256.java添加到GAE应用程序:
包装phpgae
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import com.caucho.util.Base64;
import com.caucho.quercus.module.AbstractQuercusModule;
public class HmacSHA256 extends AbstractQuercusModule {
public String compute(String baseString, String key) throws InvalidKeyException, NoSuchAlgorithmException {
Mac mac;
mac = Mac.getInstance("HmacSHA256");
SecretKeySpec secret = new SecretKeySpec(key.getBytes(), mac.getAlgorithm());
mac.init(secret);
byte[] digest = mac.doFinal(baseString.getBytes());
return Base64.encode(digest);
}
}
注意,我在这里使用SHA256。Eclipse动态编译所有内容,否则需要手动编译类
4) 在PHP上,您可以执行以下操作:
<?php
import phpgae.HmacSHA256;
$c = new HmacSHA256;
echo $c->compute( 'your base string' , 'your key' );
?>
您可以从以下内容中找到更多实用示例:
<?php
import phpgae.HmacSHA256;
$c = new HmacSHA256;
echo $c->compute( 'your base string' , 'your key' );
?>