私はこの問題への答えを高低で検索しました。基本的に、私はC#アプリケーションを作成しています。このアプリケーションは、(最初の化身で)OAuth1.0aを使用するProjectplaceAPIで認証されます。現在、oauth_verifierをアドレスバーに返しますが、このvar response = request.GetResponse();
メソッドを使用すると、最初に認証の一部として送信したoauth_token
とを返します。oauth token_secret
おそらく私はこのプロセスが機能することになっている方法を誤解していますが、私はそこにあるすべての答えを読みました、そして誰もこの質問に対処していないようです。コールバックURLがロードされた後、認証ページでユーザー名とパスワードを入力した後、アドレスバー(または他の場所で取得できる場所)からベリファイアコードをプルする必要がありますか、または可能ですか?
OAuth1.0aではアクセストークンを取得するために確認コードが必要であり、確認コードを取得する簡単な方法が見つかりません。
私は本当に助けていただければ幸いです、それは私を狂わせています!!
更新された03.12.12
御返答いただき有難うございます!
基本的に、私は以下の最初のリクエストを送信した後、oauthプロバイダーからoauth_verifierを取得しようとしているクライアントです。次のステップは、ベリファイアを承認して取得することです。私は次のことを試しました、うまくいけばあなたが提案したように、ここの深い端で泳ぐように:)
//Generate string for initiation request.
requestUri.AppendFormat("?oauth_consumer_key={0}&", consumerKey);
requestUri.AppendFormat("oauth_nonce={0}&", nonce);
requestUri.AppendFormat("oauth_timestamp={0}&", timeStamp);
requestUri.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");
requestUri.AppendFormat("oauth_version={0}&", "1.0");
requestUri.AppendFormat("oauth_signature={0}", signature);
var request = (HttpWebRequest)WebRequest.Create(new Uri(requestUri.ToString()));
request.Method = WebRequestMethods.Http.Get;
var response = request.GetResponse();
var queryString = new StreamReader(response.GetResponseStream()).ReadToEnd();
var parts = queryString.Split('&');
var token = parts[1].Substring(parts[1].IndexOf('=') + 1);
var tokenSecret = parts[0].Substring(parts[0].IndexOf('=') + 1);
var queryString2 = String.Format("oauth_token={0}", token);
//AUTHORIZE WITH CREDENTIALS FROM USER.
var authorizeUrl = "https://api.projectplace.com/authorize?" + queryString;
Process.Start(authorizeUrl);`
//TRY AND READ VERIFICATION STRING AFTER AUTHORIZATION REDIRECT`
String oauthVerifier = HttpContext.Current.Request.QueryString["oauth_verifier"];
残念ながら、これを実行すると、アドレスバーに表示されている文字列にはっきりと表示されているoauth_verifierを示すクエリ文字列が返されないようです。(はい、それはそれを説明する非常に新しい方法です。私はコードとOAuth:Pを学んでいます)。
これまでのご協力に感謝します。上記を実行しようとしましたが、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示されています。
また、クエリ文字列/応答を取得するために使用した前のコードを使用しようとすると?次の行を使用した開始要求から、querystring3は空白として返されます...本当にイライラします!:)
var queryString3 = new StreamReader(response.GetResponseStream()).ReadToEnd();
var parts3 = queryString3.Split('&');