14

私はフルスクリーンのiPhoneに最適化されたWebアプリケーションを構築しています。それは、ネイティブアプリのようにホームページから起動し、次のディレクティブを介してスタンドアロンのアプリのように動作しますが、それは単純なHTML/CSS/JavaScriptであり、PhoneGapは関係ありません。iPhone WebアプリケーションのOAuthコールバック

<meta name="apple-mobile web-app-capable" content="yes" /> 

のOAuth、Twitterのへのリダイレクト(またはその他のOAuthプロバイダー)上で認証しようと私のフルスクリーンのWebアプリケーションのうち、モバイルサファリに私を取ります。 Twitterの認証が完了すると、自分のアプリにリダイレクトされても私のホームページアプリは起動せず、Mobile Safariでリダイレクトされます。 iPhoneホームページのWebアプリでOAuthを実行することは可能ですか?その短い、私は私のホームページのWebアプリケーションを再起動するOAuthのコールバックを得ることができますか?

+0

アプリをプログラムで再起動する方法がない(たぶんjailbrokenデバイスでは可能ですが、通常の状態ではできません) – mattacular

+0

明確にするだけです。あなたはWebアプリケーションを構築しているので、すでにMobile Safariに入っています。 Safariの新しいページで認証ページが開きますか? –

+2

iPhoneに最適化されたWebアプリケーションをホームページに保存してそこから実行すると、実際にはSafariで開かれません。さて、それはまだSafariによってカバーされていますが、スタンドアロンのアプリのように起動します。それは、それが速いアプリケーションを切り替えるタスクバーとすべてで自分のアイコンを取得します。問題は、Twitterへのリンクがそのコンテナから離れることです。 – mustpax

答えて

14

私は最近同様の問題がありました。あなたがwindow.location.href="http://example.com/whatever"でJavascriptでURLを設定した場合、iOSはSafariに切り替わりません。私はこの方法を使ってSafariに切り替えることなく、スタンドアロンのWebアプリでPayPalのチェックアウトとFacebookのログインを手に入れることができました。フォームを送信している場合は、JS経由でも行い、応答からリダイレクトURLを取得してからロケーションを設定します。後であなたのアプリに戻ってくるのは、外部サービスの仕組みによって異なります。

これがうまくいかない場合は、alert('You will be passed to Safari for authentication. Reload this app afterwards.')ポップアップを使用してSafariに切り替えることができます。それほど素晴らしいことではありませんが、自動的にアプリを切り替えることで驚くほど優れています!

+0

Google OAuthは、特定の許可範囲(https://www.googleapis.com/auth/youtubeなど)をリクエストしてログインに関連する複数のアカウントを持っている場合、「アカウントを選択」画面からSafariに切り替えるよう依頼しています。 – Dunc

関連する問題