В частности - я не понимаю, как связать пользователя, прошедшего проверку подлинности с помощью oauth на конкретную учетную запись в моем приложении?Как однозначно идентифицировать вход пользователя через oauth?
Так вот счета в моем applciation:
CREATE TABLE accounts (
id BIGINT NOT NULL AUTO_INCREMENT,
username VARCHAR(40),
email VARCHAR(256),
created DATETIME,
updated DATETIME,
PRIMARY KEY (id),
UNIQUE KEY (email),
UNIQUE KEY (username)
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
с использованием Вконтакте, например, есть уникальный идентификатор пользователя (Ури XRI), который однозначно идентифицирует, что пользователь. Так что я могу просто ссылку на мои счета, как это:
CREATE TABLE openid_logins (
id BIGINT NOT NULL auto_increment,
fk_accounts_id BIGINT NOT NULL,
openid_identity TEXT NOT NULL, /*that's unique user id*/
openid_provider_url VARCHAR(255) NOT NULL, /*flickr, yahoo, live_journal*/
PRIMARY KEY (id),
INDEX (openid_identity),
FOREIGN KEY (fk_accounts_id) REFERENCES accounts(id) ON UPDATE CASCADE ON DELETE CASCADE
);
Так Всякий раз, когда пользователь входит в систему с помощью OpenID -> я могу получить свой очередной счет ссылки fk_accounts_id.
Но когда дело доходит до oauth - AFAIK нет таких вещей, как oauth_identity_string ... И поскольку маркеры oauth могут менять маркеры сами по себе, нельзя использовать как уникальную ссылку на профиль в моем приложении ..... Так что я должен делать? Как однозначно идентифицировать пользователя, регистрирующегося через oauth?
Не все провайдеры разделяют ту же самую идею того, что является идентификатором пользователя, поскольку эта концепция идентификатора не определена OAuthxx. Например, для twitter это номер (нет электронной почты). Для большинства других, электронная почта является идентификатором, но нет определенного правила. –
@SimonMourier Не могли бы вы предоставить конкретный список поставщиков и идентификаторов? – mareoraft
Нет, я не могу. Вам нужно будет просмотреть документацию разработчика для каждого интересующего вас провайдера (нет даже такого списка «наиболее широко используемых» поставщиков), и узнайте, прочитав и понимая их Docs. –