私は通常、アプリケーションを起動するときに常に設定のキーを見て、これを見ました(承認後):
: VK_SDK_ACCESS_TOKEN_PLEASE_DONT_TOUCH : scope=offline&https_required=1&access_token=e5cd068be722caafd3c449557e19c19eeed3f54c295a65cd097ed087f61c44394bd985975364fc34641cc&expires_in=0&created=1476876628588&user_id=220436550
アラート。 そのようなデータを平文で保存するのは良くないと思います。 一般に、最初の会議の後でも、承認中に入力データを読み取る可能性について考えていました。 どうして?
モジュールとしてインポートするだけです。 メインクライアントを介した承認の可能性を削除します(2番目のオプションはそのままにします)。
if (VKUtil.isAppInstalled(ctx, VK_APP_PACKAGE_ID) && VKUtil.isIntentAvailable(ctx, VK_APP_AUTH_ACTION) && fingerprints.length > 0 && fingerprints[0].equals(VK_APP_FINGERPRINT)) { if (savedInstanceState == null) { intent = new Intent(VK_APP_AUTH_ACTION, null); intent.setPackage(VK_APP_PACKAGE_ID); intent.putExtras(bundle); startActivityForResult(intent, VKServiceType.Authorization.getOuterCode()); } } else { new VKOpenAuthDialog().show(this, bundle, VKServiceType.Authorization.getOuterCode(), null); }
» ソースはこちら
カスタムWebビューをわずかにアップグレードします。
@Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { return new BaseInputConnection(this, false); } @Override public boolean dispatchKeyEvent(KeyEvent event) { super.dispatchKeyEvent(event); // event if (event.getAction() == KeyEvent.ACTION_UP) { Log.d("TAG", event.getKeyCode() + " | " + event.toString()); } return true; }
» ソースはこちら
StackOverFlowへの回答に感謝します。 パスワードを取得し、ダイアログボックスに手動で入力すると、ログインが完全に読み取られます(コピーアンドペーストなし)。 キャラクターの大文字小文字を定義することもできます:
Logcat出力
7 | KeyEvent {action = ACTION_UP、keyCode = KEYCODE_0、...、source = 0x0}
59 | KeyEvent {action = ACTION_UP、keyCode = KEYCODE_SHIFT_LEFT、...、source = 0x0}
40 | KeyEvent {action = ACTION_UP、keyCode = KEYCODE_L、...、source = 0x0}
59 | KeyEvent {action = ACTION_UP、keyCode = KEYCODE_SHIFT_LEFT、...、source = 0x0}
40 | KeyEvent {action = ACTION_UP、keyCode = KEYCODE_L、...、source = 0x0}
これはすべて大きなチャンスを開きます。 おそらく、あなたはまだ同様の例をピックアップすることができます。
私はcookieが少し特別ですが、たとえば、
remixstid, remixmdevice, remixlang, remixlhk.
各フィールドを管理することができ
remixstid, remixmdevice, remixlang, remixlhk.
メインクラスのアカウントのexit関数の説明から判断すると、トークンデータに関連しているようです。
/** * Wipes out information about the access token and clears cookies for internal browse */ @SuppressLint("NewApi") public static void logout() { ... CookieManager.getInstance().removeAllCookies(null); ... }
» ソースはこちら
VKの場合、認証をメインクライアントに完全に転送することをお勧めします 。 APIについては、詳細な例を記入してください(既存のjavadocに加えてGitHubのWikiも悪くありません)。 しかし、現在、このアプローチを使用することは疑わしいです。
ご清聴ありがとうございました!