モバイル アプリケーションを提供する API を作成しようとしています。PassportでLaravel 5.3を使用しています。
流れ自体はこんな感じです。モバイル アプリは API に Facebook アクセス トークンを提供します。このトークンは、ユーザーに関する情報 (Facebook ID、名前、プロフィール写真、電子メール) を取得するために使用されます。その時点で、バックエンドは、上記の情報がまだ存在しない場合はユーザー テーブルに挿入し、基本的に新しいユーザーを作成します。アクセス トークンはモバイル アプリによって既に付与されているため、バックエンドが facebook にログインする場所はどこにもないことに注意してください。
その後、バックエンドが、API 自体から他のルートにアクセスするために使用されるモバイル アプリにアクセス トークンを提供する必要があります。これは Passport 経由で行う必要があります。Passport を介してわかる限り、ユーザーごとに新しいクライアントを作成する必要がありますが、API が持つ唯一の「クライアント」はモバイル アプリであるため、私はそれを探していません。Facebook 経由で作成されたユーザーは、実際には API 自体ではなく、モバイル アプリのユーザーです。のスキーマoauth_clients
は次のとおりです。
CREATE TABLE `oauth_clients` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`secret` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`redirect` text COLLATE utf8_unicode_ci NOT NULL,
`personal_access_client` tinyint(1) NOT NULL,
`password_client` tinyint(1) NOT NULL,
`revoked` tinyint(1) NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `oauth_clients_user_id_index` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
これはまったく変更していません。これがデフォルトのスキーマです。
これは私のニーズには意味がありません。たくさんのクライアントは必要ありません。必要なクライアントは 1 つだけです。モバイルアプリ自体。
もちろん、モバイル アプリ自体のためだけにユーザーを作成することもできます。Facebook ユーザーには常にテーブル内のモバイル アプリが割り当てられuser_id
ますoauth_clients
が、それは間違っているようです。