5

私は、理想的には OAuth を使用して Twitter と通信する iPhone アプリに取り組んでいます。多くの人が UIWebView を使用してアプリ内で OAuth ワークフローを実行していることは知っていますが、私はそれに同意せず、Pownce アプローチを採用しています。

問題は、Twitter にはピン番号を使用してデスクトップ アプリを操作するための全体的なスキームがあることです。アプリを Twitter に登録すると、デスクトップか Web クライアントかを尋ねる Web フォームが表示されます。デスクトップ クライアントを選択した場合、ユーザーに承認を求めるときに oauth_callback パラメータを設定できますが、Twitter は承認後にそれを無視し、PIN 番号を表示します。Twitter のフォームで、自分が Web クライアントであることを指定すると、認証後にリダイレクト先の URL を入力する必要があります。また、私は iPhone アプリ固有の URL スキームを使用しているため、HTTP プロトコルに準拠した URL のみを受け入れるように見えるため、Web フォームは検証に失敗します。

というわけで、行き詰まったようです-「デスクトップ」とはピン留めしたくないので言えず、「ウェブ」とは言えませんか、iPhoneアプリのURLを使用できません。これに対する解決策はありますか?

4

4 に答える 4

8

あなたの質問から:

多くの人が UIWebView を使用してアプリ内で OAuth ワークフローを実行していることは知っていますが、私はそれに同意せず、Pownce アプローチを採用しています。

Pownce の記事では、アプリケーションを終了して Mobile Safari を開いて認証手順を実行することには問題があり、その方法でユーザーから悪い評価を受け始めていることが示唆されています。また、約 40% の失敗率も経験しました。

Pownce の解決策は、代わりにアプリケーション内で UIWebView を使用することです。そうは言っても、彼らはこれを「素朴な」解決策として分類し、理論的な「理想的な」解決策を提案し続けています。

あなたが気付いていないかもしれないもう 1 つのポイントは、デスクトップ アプリケーション (「アウト オブ バンド」/ピン番号方式を使用)Web アプリケーションは、組み込みブラウザーまたは外部ブラウザーのいずれかで Twitter サイトを開く必要があることです。

したがって、iPhone には次の 2 つの選択肢があります。

  1. UIWebView で twitter.com を開き、oauth_callbackパラメーターを指定しないかoauth_callback=oob、ピンベースの帯域外フローを開始します。次に、ユーザーは iPhone のコピーと貼り付け機能を使用してピンをコピーし、UIWebView を手動で閉じて、ピンをアプリケーションに貼り付ける必要があります。PIN は、アクセス トークンに変換して使用できます。
  2. 他の人が行っている方法を実行します (UIWebView +custom-uri://foo.barコールバック パラメーター内)。

明らかな理由から、最初のオプションは非常にくだらないものであり、Twitter がカスタム URI にリダイレクトできないプラットフォームでのみ実際に役立ちます。

于 2009-07-19T09:52:26.073 に答える
0

簡単な解決策は、常に 301 リダイレクトをカスタム URL スキームに送信する HTTP ページを作成し、その HTTP URL を Twitter Web API に提供することです。

それを除けば、ネイサンの答えは非常に完全です。

于 2009-07-23T18:17:54.917 に答える
0

認証に中間 Web サイトを使用できます。アプリは一意の ID (ハードウェア ベース?) を作成し、それを保存します。次に、認証のためにユーザーを送信したことを記録し、一意の ID を Web サイトに送信します。次に、ユーザーを Web サイトにリダイレクトします。次に、Web サイトは oAuth を使用してユーザーを Twitter に送信します。ユーザーが Web サイトに戻り、一意の ID を認証済みとしてマークし、認証情報を保存します。ユーザーは iPhone でアプリを再起動し、認証のためにユーザーを送信したことを読み取り、一意の ID を使用して Web サイトに連絡し、認証情報を読み取ります。

長くなり、別のウェブサイトが必要ですが、うまくいくはずです。

于 2009-07-29T12:39:14.383 に答える
0

その方法は次のとおりです。Twitter に自分が Web アプリであることを伝え、oauth クライアントの登録時に Twitter を満足させる古い HTTP:// URL を作成します。

次に、アプリで、目的の URL を callback パラメーターに渡します。Twitter(私の経験では)は、あなたが与えたものを使用します。

于 2009-07-23T21:19:27.560 に答える