が(ただ、TwitterやLinkedInにフォースクエアのような)全てのサービスにOAuthのフローを処理するためにGeneric Library in C#
を書きます。最も難しい部分は、私はsimulate all the user input in code
にして、 "OK、私はそれを許可する"のようなボタンをクリックしたり、ユーザ名/パスワードを書き込んだりするようなユーザアクションは必要ないということです。私はこれまで持って
疑問:
1 - TwitterのAPIのauthenticity_token
の使い方いただきましたか?
2 - 私はOAuth Flowの一般的な使い方を実装できるように、すべてのサービスが使用する要因は何ですか。たとえば、私は最初のステップが実行するジェネリックメソッドを作るのは本当に簡単だとわかりました。私がしなければならないことは、webRequestのURLを変更することです.BAM、私はリクエストトークンを持っています。
3 - サービスごとに検証者を取得するにはどうすればよいですか?例えばLinkedIn Service
では、この値を取得するためにページを解析することができましたが、twitter APIの場合はverifier
が見つかりません。ブラウザで私のアプリケーションを許可している場合でも、フロー中のHTMLにはVerifier
は表示されません。
観察:
1 - それはであり、私はOAuthのライブラリの多くがthisかthatのもののように、そこにあることを知っているが、私は私がしたいものを作ることができます何のライブラリが存在しませんユーザーの入力を求めるプロンプトを表示せずに、ユーザーを認証し、承認します。
2 - 私はユーザー入力を求めることはできません。認証のためのユーザー名とパスワードのようなすべての値はハードコードされ、すべてのユーザーはこの要求に対して同じアカウントを使用します。
3 - 私も知っていますが、ここには私が書いた記事がありますが、ほとんど同じ疑問があります。私が再ポスティングするのは、それをより鮮明にすることです。
4 - 英語の間違いや概念の誤解を前もって申し訳ありません。
基本的なコードサンプル:
これは、例えば、私は、任意のサービスのためのリクエストトークンを取得するために(つまり、広く海外にウェブavaibleである)を使用しています方法です。私がしなければならないのは、REQUEST_TOKEN
の値をサービスに使用する特定のURLに変更することです。そのため、LinkedIn、Twitter、またはFoursquareのトークンを取得できます。しかし、私は他のステップで同じプロセスを適用することはできません。
public string AuthorizationLinkGet()
{
string ret = null;
string response = oAuthWebRequest(Method.GET, REQUEST_TOKEN, String.Empty);
if (response.Length > 0)
{
//response contains token and token secret. We only need the token.
NameValueCollection qs = HttpUtility.ParseQueryString(response);
if (qs["oauth_callback_confirmed"] != null)
{
if (qs["oauth_callback_confirmed"] != "true")
{
throw new Exception("OAuth callback not confirmed.");
}
}
if (qs["oauth_token"] != null)
{
ret = AUTHORIZE + "?oauth_token=" + qs["oauth_token"];
}
}
return ret;
}
本当ですか? それで、必要はありません、私はそれをmannualyできますか?なぜなら、先月LinkedInを使って、ユーザー入力を求めるプロンプトを表示せずにユーザー(ユーザー名、パスワード)を接続するだけだったからです。 「これは私をハッカーにしてくれるのですか?」と冗談を言っているので、私はすべてのサービスのためにこれをすることができないと言っていますか? –
私はプロバイダではなく、私はサービスのAPIを使用してコンシューマになります。 –
OAuth SDKは、これを行うことを許可していない理由があります。あなたはそれをすると思わないので、ユーザーは承認すると考えられます。理論的には、一度だけ行う必要があります。 –