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' );

?>