TwitterKit使っての公式アプリ経由ログインができない(未解決)
ざっくりまとめ。
- TwitterKit を使っての公式アプリ経由でのログインができない
- 公式アプリの連携画面まではでる
- その後自分のアプリに戻ってきた時に Safari で連携画面を開き直す
- その Safari で連携したら無事連携は完了できる
- たまーーに、できるときもある
です。
さきに書いておきますけど、解決はしていませんので!
環境
- Xcode v10.1
- Swift v4.2
- iOS v12.1.1
- TwitterKit v3.4.2
問題
ツイートスクラップでは、TwitterKit を使って Twitter との連携をおこなっているのですが、
その連携が意図している挙動にならないのです。
- Twitter連携をタップ
- Twitter公式アプリが起動(インストールされていれば)
- Twitter公式アプリで連携画面へ遷移し連携をタップ
- ツイクラに戻ってきて...Safari で再び連携画面を開きなおす(なぜなのか!
...😇
とくだんのエラーが吐かれているようには見えない。。
もちろん、意図している挙動としては、連携が完了してそのままツイクラの操作へ...という感じです。
ちなみに、開き直した Safari でログインして連携をすると、今度はちゃんと期待している挙動になります。
ちなみにその2(笑)、一旦 Safari で連携まで完了して、ログアウト後再び連携しようとすると、今度は意図している挙動になります。
ちなみにその3(コラ!)、たまーーーーに初回でも期待している挙動になるときも。。。🤔
GitHub にも issue がたってる
...進展はないですけどね。
2018.10 でサポートは切れているので、この時点でかいけつされていないものはもう多分解決されないのですよね。
自力でどうにかするか、Forkして対応している人がいないかとか...
もう諸々自力でなんとかしたほうがいいんですかねぇ。。。
コード
一応関連するところをのっけておきます。
コードも特別なにかやっているとは思えないのです。
// 連携時
TWTRTwitter.sharedInstance().logIn { (session, error) in
}
それで、AppDelegateで
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return TWTRTwitter.sharedInstance().application(app, open: url, options: options)
}
多分、、普通です。多分。
なにか解決策とかご存知な方は是非教えていただきたく!🙏
追記(2019.02.15)
@ch3cooh さんがわざわざミニマムコード作って検証してくれるっていう神対応をしていただいた。。恐縮の至りです🙇
ミニマムコード書きましたが記事に書かれているような挙動にはなりませんでした。TwitterKitの最新版の問題かとも思ったんですけれど普通に動いていました…… これのAPI keyを差し替えて動かしてみてください。それでも同じようにSafari開くならアプリ設定が原因かな? https://t.co/NbYFC1fX1P
— さくさん (@ch3cooh) February 13, 2019
やってみましたが、、僕の環境だとやっぱり Safari が開くのですよね〜〜〜😇
ほかにも @cocoamixjp さんにもご協力頂いたりでもーすんません、ありがとうございます。
いくつか入れてるけれど今のところ問題なしですな〜(objc)https://t.co/DFOqY6lqn4
— うに+✩♪🍊 (@cocoamixjp) February 13, 2019
ってことで、コードではない何かが原因っぽいというのが確定。
もうよくわからんので、自分の端末が💩ってことで納得しときます。
もしツイクラつかってるかたで同じ現象に遭遇したら教えてください。
も少し頑張って調査とかしてみます🤤
一応僕もログインだけのやつ作ってやってみたんですけど、やっぱ Safari ひらいちゃうんですよね。。なぞいですね!
の、pods ブランチがそれ。
(このリポ自体は README みるとわかると思いますが、本来違うやつの検証用(笑))