Очевидно что вы плохо понимаете как работает openApi раз пытаетесь все время сравнивать то, что вам нужно, с этой технологией.
Там структура такая: есть браузер клиента, с яваскриптом.
Есть сервер сайта.
Есть сервер вконтакте.
Когда человек хочет авторизоваться на сайте он жмет кнопку «авторизоваться через в контакте». Открывается всплывающее окно со страницей с домена вконтакте, там пользоватлеь вводит email/пароль, данные его (логин и пароль) отправляются серверу контакта. Сервер контакта их проверяет и если все ОК отправляет данные серверу сайта, на котором человек авторизуется. Сервер сайта, приняв эти данные, проверяет их и если все ок авторизует человека.
Т.е. проверка подлинности данных происходит на стороне сервера, а не на стороне яваскрипт.
Хранить ключи в яваскрипте/флеше не вариант и так никто не делает. В любом случае нужен дополнительный скрипт на стороне сервера-клиента, который будет проверять подлинность пришедших от сервера-поставщика услуги данных и уже потом передавать их в браузер (аяксом или еще как то)
Ответ на вопрос выше: как определить что посетитель уже залогинен на сайте-поставщике услуги?
Очень просто, сайт-поставщик услуги ставит клиенту свою куку. сайт-клиент ставит на своей странице iframe в котором грузится спецстраница сайта-поставщика со спец параметром типа from=site-client. Сайт-поставщик услуги получив запрос этой страницы смотрит есть ли у человека его кука и если есть то шлет серверу сайта-клиента необходимые данные, а сайт-клиент уже аяксом шлет данные в браузер пользователя.
Весь обмен данными с точки зрения JS происходит в пределах одного домена: через iframe с сайтом-поставщиком и аяксом с сайтом-клиентом.
Весь кроссдоменный обмен данными (между сайтом-поставщиком и сайтом-клиентом) происходит уже на стороне серверов без участия браузеров клиентов и эти данные невозможно перехватить.