3

Yammer からデータを取得する小さな webapp を作成しようとしています。彼らのデータにアクセスするには、Yammer の OAuth ブリッジを経由する必要があります。Oauth php ライブラリを使用して、3 ウェイ ハンドシェイクを実行してみました。しかし、最後のステップで、無効な OAuth 署名があるというエラーが表示されます。

一連の手順は次のとおりです。

  1. 最初の部分では、リクエスト トークン URL を取得します。これらは、渡すクエリ パラメーターです。

        [oauth_version] => 1.0
        [oauth_nonce] => 4e495b6a5864f5a0a51fecbca9bf3c4b
        [oauth_timestamp] => 1256105827
        [oauth_consumer_key] => my_consumer_key
        [oauth_signature_method] => HMAC-SHA1
        [oauth_signature] => FML2eacPNH6HIGxJXnhwQUHPeOY=
    
  2. この手順が完了すると、次のようにリクエスト トークンを取得します。

    [oauth_token] => 6aMcbRK5wMqHgZQsdfsd [oauth_token_secret] => ro8AJxZ67sUDoiOTk8sl4V3js0uyof1uPJVB14asdfs [oauth_callback_confirmed] => true

  3. 次に、パラメーターを承認 URL に渡すことによって、指定されたトークンとトークン シークレットを承認しようとします。Yammer の認証ページに移動し、アプリが Yammer と通信できるようにします。

  4. 次に、Yammer から 4 桁のコードが返されます。このコードをアプリケーションに戻して、永久アクセス トークンを取得しようとします。次の情報をアクセス トークン URL に渡します。

        [oauth_version] => 1.0
        [oauth_nonce] => 52b22495ecd9eba277c1ce6b97b00fdc
        [oauth_timestamp] => 1256106815
        [oauth_consumer_key] => myconsumerkey
        [callback_token] => 61A7
        [oauth_token] => 6aMcbRK5wMqHgZQsdfsd
        [oauth_token_secret] => ro8AJxZ67sUDoiOTk8sl4V3js0uyof1uPJVB14asdfs
        [oauth_callback_confirmed] => true
        [oauth_signature_method] => HMAC-SHA1
        [oauth_signature] => V9YcMDq2rP7OiZTK1k5kb/otMzA=
    
  5. ここでは、Oauth Permanent アクセス トークンを受け取ることになっていますが、代わりにInvalid Oauth signatureを受け取ります。何が間違っているのかわかりません。同じ署名を使用してリクエストに署名します。新しいトークンとシークレットを使用してリクエストに署名する必要がありますか? 私もそれを試しましたが、役に立ちませんでした。標識ライブラリを使用してJavaでこれを実装しようとしても、まったく同じ場所で立ち往生しました。助けて!!

4

3 に答える 3

0

これcallback_tokenは、Yammer が今年初めに OAuth セキュリティ アドバイザリに対応して導入したものです。OAuth 1.0a がリリースされたとき、代わりに という名前が付けられましoauth_verifierた。ただし、Yammer がまだ回避策をサポートしている可能性は低いとは言えませんが、名前を変更して再試行して確認してください。

また、以下は昨日の Yammer Development Network からの情報です。

明日、API クライアントでのユーザー ネットワークの切り替えを容易にするために、Yammer API にいくつかの変更をリリースします。変更のほとんどは、特定のユーザーに対して事前承認された OAuth アクセス トークンを生成できるようにする OAuth アクセス トークンの呼び出しにあります。クライアントが属するネットワークごとに 1 つのトークンが生成され、クライアントは、そのネットワークの適切なトークンで署名された API リクエストを送信することによってネットワークを切り替えます。

この変更により、Yammer OAuth ライブラリの更新が必要になる可能性があると想定しています。私はまだそれを見ていません。

編集: Yammer 側で変更が加えられたにもかかわらず、私のpython-yammer-oauthライブラリは引き続き機能します。

Edit2:PLAINTEXTの代わりに署名方法を使用してみてくださいHMAC-SHA1。Yammer と HMAC-SHA1 で問題が発生しました。

于 2009-11-06T06:57:26.723 に答える
0

問題が見つかりました!

CONSUMER_SECRET の末尾にアンパサンド ("&") を追加するのを忘れていました。おそらくこれはあなたの問題でもありますか?

于 2010-08-10T10:49:26.620 に答える
0

PLAINTEXT を使用してみました..しかし、この方法では、トークンを要求しても同じ「無効な OAuth 署名」エラーが発生します。

HMAC-SHA1 を使用し、実際の API メソッドにアクセスするために、つまりメッセージを投稿するためにアクセス トークンを生成することは可能ですか?.PLAINTEXT を使用しますか?

于 2009-11-09T08:53:38.683 に答える