LoginSignup
2
2

More than 1 year has passed since last update.

【Swift】WKWebViewでGoogleログインが表示されない

Posted at

はじめに

私はWKWebViewでTwitterログインを実装しようと思ってログイン画面を表示しました。
そしたらなんとGoogleでログインがブロックされている!?!?!?!ってことに気づきました

最初はAppleがGoogleをブロックしてる嫌がらせかと思ってました笑
しかし調べてみるとGoogle側がセキュリティ関係の問題で埋め込みブラウザでは表示できないようにしているようでした。

今回は埋め込みブラウザでも「Googleで続ける」を表示できるようにしていきます。

解決方法

import UIKit
import WebKit

class ViewController: UIViewController {

    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        webView = WKWebView(frame: view.frame)

        view.addSubview(webView)

+       webView.customUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1"

        webView.load(URLRequest(url: URL(string: "https://mobile.twitter.com/i/flow/login")!))

    }

}
通常 適用後
simulator_screenshot_573B0F47-E41D-4D8B-929E-ABDED70D295B.png simulator_screenshot_E251749B-4F92-4663-B719-920F952FBD64.png

ユーザーエージェントについて

ユーザーエージェントについては詳しいことは分かりませんが、
サービスによっては変なユーザーエージェントを使用するとブロックされるなんてことも考えられます。

ユーザーの端末情報によって動的に変えられるように以下のような感じにしてみました。

webView.customUserAgent = "Mozilla/5.0 (\(UIDevice.current.userInterfaceIdiom == .phone ? "iPhone" : "iPad"); CPU \(UIDevice.current.userInterfaceIdiom == .phone ? "iPhone" : "iPad") OS \(UIDevice.current.systemVersion.replacingOccurrences(of: ".", with: "_")) like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1"

Safariのバージョン取得方法がわからなかったので15.0に固定しています。
iOSとSafariの対応表もあるっぽいのでそれを取得して動的に変更しても良さそうです。

なんの数字なのかわからない箇所もあるので完全とは言えませんが全部固定してるよりはマシだと思います。
これも動的に変更できるよってものがあればコメントで教えてください。

参考サイト

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2