1) 最初に解決すること: ? はどこにありoauth_verifier
ますか?
アプリを承認するときにtumblrによって行われたリクエストを確認しました。これがありましたhttp://www.tumblr.com/oauth/authorize?oauth_token=xxx
。
にリダイレクトされましたchrome-extension://jlaojpiafmimgibgdfbmphfkejnlifdn/chrome_ex_oauth.html?chromeexoauthcallback=true&oauth_token=XXX&oauth_verifier=dmbcbNDGj7QatrFznXG587RIM7wI1LG3bnKwYGy5tc2icmUVvE#_=_
。
検証者が配置されているのに、なぜ取得できないのでしょうか? には、現在の URL をデコードし、そこからパラメーターを取得するchrome_ex_oauth.js
このメソッドがあります。ChromeExOAuth.formDecode()
そして、 315行目にマジックチェックがあります:
var keyval = param.split("=");
if (keyval.length == 2) {
ご覧のとおり、URL の末尾#_=_
が何かおかしいです。最初に、このメソッドを少し書き直して、これを取り除くことにしoauth_verifier
ました。
2) うまくいかなかったoauth_verifier=dmbcbNDGj7QatrFznXG587RIM7wI1LG3bnKwYGy5tc2icmUVvE#_=_
ので、このハッシュタグを完全にカットすることにしoauth_verifier=dmbcbNDGj7QatrFznXG587RIM7wI1LG3bnKwYGy5tc2icmUVvE
ました。
私にとってはまだ疑問です.Tumblrが私にフォローを求めているリダイレクトURLの最後にあるこのハッシュタグは何のためにあるのでしょうか?
少し変更した方法は次のようになります。
ChromeExOAuth.formDecode = function(encoded) {
// Cut hash at the end of the url.
var hash_index = encoded.indexOf('#');
if ( hash_index > -1 ) {
encoded = encoded.substring(0, hash_index);
}
var params = encoded.split("&");
var decoded = {};
for (var i = 0, param; param = params[i]; i++) {
var keyval = param.split("=");
if (keyval.length == 2) {
var key = ChromeExOAuth.fromRfc3986(keyval[0]);
var val = ChromeExOAuth.fromRfc3986(keyval[1]);
decoded[key] = val;
}
}
return decoded;
};