Я пишу бэкэнд для входа в Google для Android и IOS. Для Android мы можем использовать идентификатор клиента веб-приложения и секрет клиента, но для ios Google предоставляет только идентификатор клиента, а не секретный ключ. Поэтому я не могу выполнить вход в Google из IOS.
Поскольку ios и android требуют двух разных учетных данных клиента, как я могу включить два идентификатора клиента в один проект (один для android и один для ios)?
Это код Back iиспользовали:
serializers.py
class SocialSerializer(serializers.Serializer):
"""
Serializer which accepts an OAuth2 access token and provider.
"""
provider = serializers.CharField(max_length=255, required=True)
access_token = serializers.CharField(max_length=4096, required=True, trim_whitespace=True)
views.py
class SocialLoginView(generics.GenericAPIView):
"""
Log in using facebook or Google
"""
serializer_class = serializers.SocialSerializer
permission_classes = [permissions.AllowAny]
def get_tokens_for_user(self, user):
refresh = RefreshToken.for_user(user)
return {
'refresh': str(refresh),
'access': str(refresh.access_token),
}
def post(self, request):
"""Authenticate user through the provider and access_token"""
serializer = self.serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
provider = serializer.data.get('provider', None)
strategy = load_strategy(request)
try:
backend = load_backend(strategy=strategy, name=provider,
redirect_uri=None)
except MissingBackend:
return Response({'error': 'Please provide a valid provider'},
status=status.HTTP_400_BAD_REQUEST)
try:
if isinstance(backend, BaseOAuth2):
access_token = serializer.data.get('access_token')
user = backend.do_auth(access_token)
except:
return Response({
"error": "Invalid Credentials",
}, status=status.HTTP_400_BAD_REQUEST)
try:
authenticated_user = backend.do_auth(access_token, user=user)
except:
return Response({
"error": "Invalid Token"
}, status=status.HTTP_400_BAD_REQUEST)
if authenticated_user and authenticated_user.is_active:
data = self.get_tokens_for_user(authenticated_user)
response = {
"email": authenticated_user.email,
"username": authenticated_user.username,
"refresh": data.get('refresh'),
"access": data.get('access')
}
return Response(status=status.HTTP_200_OK, data=response)
urls.py
urlpatterns = [
path('api/auth/oauth/', SocialLoginView.as_view()),
]
Кто-нибудь может мне помочь?