アプリにShareKitを実装しようとしています。SHKConfig.hファイルのTwitterアプリケーション設定が必要なセクションに、コールバックURLを設定することになっている行があります。
TwitterでTwitterアプリケーションを開き、そこにあるすべてのフィールドに入力しましたが、[コールバックURL]フィールドにどのデータを挿入する必要があるかがわかりません。
誰か説明できますか?
Twitterのアプリケーション設定に書き込んだコールバックパラメータは無視されます。たとえば、 http://www.google.comのように何でも書くことができます(無視されるため、何でもかまいません)。
#defineにコールバックURLを追加すると、その値は所有者の承認手順でTwitterに送信され、以前にTwitterWebサイトに書き込んだ値を上書きします。奇妙な、私は知っています。これは、このセキュリティの脆弱性に関連しています。
コールバックパラメータは、Twitterが認証後にユーザーに送信するURLです。アプリケーションではなくWebサイトで実行する場合、URLコールバックはOAuthフローの制御を回復するために使用されます。
アプリケーションでは、myapplication:// twitterのようなカスタムスキームに設定してから、スキームmyapplicationをアプリに登録できます。このように、認証後、UIWebViewまたはSafariで実行されているTwitter Webサイトは、iOSがアプリに割り当てられていることを認識しているURLを起動します。これにより、OAuthフローの制御を回復できます。
それが理論です。ShareKitがどのように機能するのか正確にはわかりません。UIWebViewで認証を実行し、ユーザーのアクティビティを検出して手動で制御を回復している可能性があります。これは、別の方法です。
私はShareKitの新しいバージョンを使用していますが、ソースにはTwitterのコールバックに関する次のコメントがあります。
コールバックURLは、SHKTwitterCallbackUrlに入力したものと一致する必要があります。コールバックURLは、実際の既存のURLである必要はありません。ユーザーがリダイレクトされる前にShareKitがインターセプトするため、ユーザーがアクセスすることはありません。一致する必要があります。
Twitterの設定でコールバックURLをhttp://somecallbackurl.comに設定し、これをソースでも同じように設定すると、魅力のように機能します。:]。この助けを願っています。
あなたはこれを使うことができます
func application(_ application:UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any]) -> Bool {
print("called")
let directedByTWTR = Twitter.sharedInstance().application(application, open: url, options: options)
return directedByTWTR
}