gooID利用規約 改定のお知らせ

mixiアプリモバイルにて、
gpsから位置情報を取得した際のOAuth Signatureの検証方法
について、ご存じの方がおられましたら、ご教授お願い致します。
言語はjavaで書いております。

まず、gpsにて位置情報取得のため、
mixi Developer Centerの記述サンプル(http://developer.mixi.co.jp/appli/spec/mob/get_g …)に従い、
以下のようなURLでリンクを張りました。
(guid=ONもです。)
<a href="location:gps?url=http%3A%2F%2Fexample.com%2Ffoo%2F">位置情報を取得する</a>

その祭、
mixi側から来るリクエストとAuthorizationヘッダの内容をソートして並べ替えると、
以下のものがありました。(XXの部分は英数字)

datum=wgs84
guid=ON
lat=XX.XX.XX.XX
lon=XX.XX.XX.XX
oauth_consumer_key=XXXXXXX
oauth_nonce=XXXXXXX
oauth_signature_method=XXXXXXX
oauth_timestamp=XXXXXXX
oauth_version=XXXXXXX
opensocial_app_id=XXXXXXX
opensocial_owner_id=XXXXXXX


あとは、OAuth Signatureの検証方法について
http://developer.mixi.co.jp/appli/spec/mob/valid …
を参考にして、Signatureを作成したのですが、
Authorizationヘッダのoauth_signatureと生成したsignatureの値が一致しません。

現在、gpsからのコールバックでなければ、
oauth_signatureと生成したsignature値が一致するので、
gpsからのコールバック時は、何か過不足の処理があるのかと思っています。

もし、この辺りの事で、お詳しい方がおられましたら、
ご教授のほど、よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

> 現在、gpsからのコールバックでなければ、


> oauth_signatureと生成したsignature値が一致するので、

ということなので、ひとつの可能性を。
[1] を見たところ、lat と lon には "+" または "-" の記号が含まれているようですが、この記号はちゃんと処理されているでしょうか。
例えば、受け取った query 文字列はパーセントエンコードされている状態ですので、出コードする必要があります。 また、OAuth のシグニチャを生成する前にパラメータをまとめて文字列を生成しますが、そのときには OAuth の仕様にそった形でパーセントエンコードしなければいけません。

もし、既にちゃんとされているのでしたらすみません。

[1] http://developer.mixi.co.jp/appli/spec/mob/get_g …
    • good
    • 0
この回答へのお礼

ありがとうございました。

mixi側からくるoauth_signatureの値ですが、
urlエンコードされたパラメータで、oauth_signatureを作成しているみたいです。
(多分なのですが。)
ですので、SAPサーバ側では、urlエンコードされたパラメータで、signatureを作成しないと
いけないようなのですが、HttpServletRequest.getParameter(パラメータ名)
でデコードした値でsignatureを作成していたため、
lat と lon の パラメータ値が、+になり、
それが原因正しくsignatureが生成されなかったようです。

おかげで、なんとかできました。

ありがとうございました。

お礼日時:2011/07/26 00:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング