I think the best approach is to develop one single API capable of beign consumed by many applications (mobile, web, etc) in the same way. One set of routes, all API routes. If I'm not wrong, the consumer app will be an SPA, so you don't need anything else.
The OAuth protocol supports several different types of authentication and authorization, JWT is one standard way of creating tokens OAuth use.
I use JWT with this package: https://github.com/tymondesigns/jwt-auth
You can login a user as this:
$credentials = $request->validate([
'email' => 'required|email',
'password' => 'required'
]);
if (!$token = JWTAuth::attempt($credentials)) {
throw new InvalidCredentialsException;
}
return [
'data' => array_merge(auth()->user()->toArray(), ['token' => $token]),
'success' => true
];
That will return a token (a long string) that should be sent in subsequent calls. You can send the token as a header or URL param (check the package docs).
If the token is valid, you can access to the user data like this:
$user = JWTAuth::parseToken()->authenticate();
Or just using the Laravel auth functions:
$user = auth()->user();
Let me know if you need more help.
PS. Angular is good, the Laravel community is more Vue oriented, but both are great for SPAs.