0

Echones API から取得した 7Digital クリップのプレビューを再生したい。この目的のために、すべてのリクエストに対してプログラムで oauth 署名を生成したいと考えています。

クリップを再生するため の URL- http://previews.7digital.com/clip/1234 ただし、2 脚の oAuth が必要です。

この目的のために、stackoverflow から取得した以下のコードを使用しました。

private static final String HMAC_SHA1 = "HmacSHA1";

private static final String ENC = "UTF-8";

private String getSignature(String url, String params)
            throws UnsupportedEncodingException, NoSuchAlgorithmException,
            InvalidKeyException {

    StringBuilder base = new StringBuilder();
    base.append("GET&");
    base.append(url);
    base.append("&");
    base.append(params);
    System.out.println("String for oauth_signature generation:" + base);

    byte[] keyBytes = (DIGITAL_CONSUMER_SECRET + "&").getBytes();

    SecretKey key = new SecretKeySpec(keyBytes, HMAC_SHA1);

    Mac mac = Mac.getInstance(HMAC_SHA1);
    mac.init(key);

    return new String(base64.encode(mac.doFinal(base.toString().getBytes(
            ENC))), ENC).trim();
}

しかし、クリップを再生するための最終 URL にアクセスすると、無効な署名エラーが発生します。

7digital ツールを使用して URL を生成すると、クリップを再生できます。http://7digital.github.io/oauth-reference-page/

しかし、再生リクエストごとにプログラムで最終 URL を生成する必要があります。これに関して私を助けてください。

4

2 に答える 2

0

ベース文字列全体をエンコードしています。代わりに、ベース文字列の 3 つの部分を別々にエンコードする必要があります。「&」文字はエンコードしてはなりません。

私の OAuth リファレンス ページを使用して、生成しているものとリファレンス実装を比較してください: https://bettiolo.github.io/oauth-reference-page/

仕様には、ベース文字列の生成に関する詳細情報があります: http://oauth.net/core/1.0a/#anchor13

于 2014-08-13T12:52:57.557 に答える