ログインWeibo、共有は非常に一般的な機能です。水はナニはないテストN回前に、どのように急に使用することはできません、1日、テストMMが突然バグを上げ、Weiboの共有を使用することができないと言うです。
よく見て、これです。電話番号は、マイクロブログクライアントをインストールされていない、SDKは、共有へのログイン、共有へのページ内で移動します。通常は問題ありません。しかし、今の図、完全なログイン、コールバックURLにジャンプSINA_REDIRECT_URI構成:「http://www.joyshebao.com/」リードがそれをインストールしていない、と使用することはできません、それは我慢することはできません。
プロセスのバグを示し、下図
次の図は、通常のロジックを示して、あなたは共有のWebインターフェイスにジャンプしなければなりません
例慎重に調査、共通の問題ではない、唯一のキビ8(android9)この問題をテストする場合は、この機会は、構築されたWeb授権株式を使用することはできませんSDK。
、問題を発見したデバッグを開いて、それを見つけるためのステップバイステップ。
図1は、シナ内部プロセスの位置決めは、前方誤りが生じる、間違ったSDK。SDKからの最初のステップ、調査によって開始ステップ、共有入り口が開始されます。
マイクロブログクライアントがインストールされていない場合、それは、com.sina.weibo.sdk.web.WeiboSdkWebActivityインタフェースを来ります
初期化はinitLoad方法を来て、その後、別のクライアントを設定し、状態に応じて、再び、戦略パターンを使用して、WebViewClient統合マイクロブログ、ウェブ負荷用とインターセプト処理に耳を傾けているWebクライアント、WebViewClient DO設定します。
コードをデバッグすることにより、AuthWebViewClientを来て、その後、コードを見て、何が行われていました。
あなたは、コールバックプロセスをロードする前に行う必要があるかどうかを判断するためにAuthWebViewClient書き換えonPageStartedにおけるマイクロブロギングSDK()、。
if(url.startsWith(authInfo.getRedirectUrl()) && !this.authed) {
this.authed = true;
this.handleRedirectUrl(url);
view.stopLoading();
if(this.requestCallback != null) {
this.requestCallback.closePage();
}
} else {
super.onPageStarted(view, url, favicon);
}
この内部コアロジック、getRedirectUrlはマイクロブログではコールバックURLの設定(SINA_REDIRECT_URI)を必要とする、はい、非常に精通してい
初期登録が完了した後は満たすために、見ることができます!this.authedと始まるURLマッチング構成で出会い、それが現在のWebViewのロードが終了し、リターンを停止し、新しい共有インターフェースをロードします。
バグが現れ、ここに直接super.onPageStartedと一致していないURLとauthInfo.getRedirectUrl()にジャンプします()。閉じていない、それは自分自身を設定するには、URLのインタフェースにジャンプします。
このメカニズムは同じ、より多くのセキュリティ上の考慮事項の公式ウェブサイトでアプリフィル場合は検出されている可能性があります。しかし、携帯電話ではないキビ。
// xxxxxは、その割り当てがhttp:バックURLをデバッグすることはHTTPSでhttpsで置き換え8に// XXXXこれは恥ずかしいです、キビの電話、テスト他のブランドの携帯電話は、この問題はありません。それがもし(真の)制御ロジック、リターンの成功裡の妥結に入ることができるので、交換しないで。
問題以来一貫聖歌がある解決策を見つけるために
しかしonPageStartedは、システムレベルで、長い時間を探してhttpsに時間キビシステムのカスタマイズ、デフォルトの均一なHTTP内が処理されなければならない示唆、未処理の取引を見つけることができませんでした。(HTTPS大面積アプリケーションでは、普及率が増加している。この設計は理解できるが、ピット古いアプリは、最初のhttpで登録します)
それはそれを得ることができないので、背景の設定をマイクロブログのアイデアは、最もシンプルには、httpsで始まるように設定されていました。しかし、これはすべての後、彼らは、httpにredirectUrlを設定されている、髪のアプリのオンライン版に影響を与えている://、もし変更されたマイクロブログの背景設定、大面積を使用することはできませんので。
低コストを見つけるために、オンライン環境は、プログラムには影響を与えません。私がしたいと考え、またはアプリの端から開始します。AspectJのアスペクト、動的な傍受プロセス、URLギブ・変更バックを使用して、フックのアイデアを使用します。
コードの最初に:
AspectJの、アンドロイド量Aopギャングパッケージを使用してカット技術。(具体的な使用は、自己百度であることができます)
バグがURLに耳を傾け、このアプローチを引き継ぐために@Aroundを使用して、この方法では、カットのため、次に理由を、発見した前に、HTTPSです:// xxxxは、その後、HTTPに変更する場合:// xxxxは、その後、joinPoint.proceedを呼び出します();第2原変形後のパラメータ、および元のメソッドに送信してバック。このように、マイクロブログのWebライセンスジャンプ異常を解決するために。
すべてのバージョンとの互換性、テストされた、キビ8つの素晴らしい異常が解決しました。彼の次の版では、キビ8人のユーザが使用することができます。最小は、この問題を解決するために、コスト。
概要:提案可能な最大使用HTTPSがありますが、それは問題を解決するために、セキュリティ上の問題、または電話システムの一部であるかどうか、不要なバグを軽減します。
SDKをマイクロブログを見ることで、また、そのような戦略パターン、観測者の委任を使用するなど、多くのことを学びました。
解決するために最小の影響ソリューションと、コアを見つけ、ステップデバッグによってステップ。