• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Implementing Sign in with Apple in Laravel REST API

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
To implement Sign in with Apple functionality in your Laravel REST API, you'll need to follow these steps:


  1. Prerequisites

    An Apple Developer account

    A registered app in Apple Developer portal

    Laravel 8.x or higher

    PHP 7.4 or higher


  2. Setup Apple Developer Configuration

    Go to Apple Developer Portal

    Create a new App ID with "Sign In with Apple" capability enabled

    Note your Service ID (e.g., com.example.app)

    Generate a private key for "Sign In with Apple" and download it


  3. Install Required Packages

composer require laravel/socialite
  1. Configuration

Add these to your .env file:


APPLE_CLIENT_ID=nz.co.fskills.app
APPLE_TEAM_ID=J43F88Y4BH
APPLE_KEY_ID=CLU5NYTK5P
APPLE_PRIVATE_KEY_PATH=storage/apple_private_key.pem
Store the apple_private_key.pem in storage/apple_private_key.pem


-----BEGIN PRIVATE KEY-----
Eapmple key
-----END PRIVATE KEY-----

Create an Controller :


public function SocialLogin(Request $request): \Illuminate\Http\JsonResponse
{

$request->validate([
'token' => 'required',
'provider' => 'required|in:google,facebook,apple',
]);

try {
$provider = $request->provider;
$socialUser = Socialite::driver($provider)->stateless()->userFromToken($request->token);
//return response()->json($socialUser);

if ($socialUser) {
$user = User::withTrashed()->where('email', $socialUser->email)->first();
if (!empty($user->deleted_at)) {
return Helper::jsonErrorResponse('Your account has been deleted.',410);
}
$isNewUser = false;

if (!$user) {
$password = Str::random(16);
$user = User::create([
'name' => $socialUser->getName(),
'email' => $socialUser->getEmail(),
'password' => bcrypt($password),
'avatar' => $socialUser->getAvatar(),
'email_verified_at' => now(),
]);
$isNewUser = true;
}

Auth::login($user);
$token = auth('api')->login($user);

return response()->json([
'status' => true,
'message' => 'User logged in successfully.',
'code' => 200,
'token_type' => 'bearer',
'token' => $token,
'expires_in' => auth('api')->factory()->getTTL() * 60,
'data' => $user,
],200);
} else {
return Helper::jsonResponse(false, 'Unauthorized', 401);
}
} catch (Exception $e) {
return Helper::jsonResponse(false, 'Something went wrong', 500, ['error' => $e->getMessage()]);
}
}
Create a route:


Route::post('/social-login', [SocialLoginController::class, 'SocialLogin']);


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу