2 votes

Google signin API using oauth Post Method in python flask server

J'ai une question sur la mise en place de google login. J'ai pu implémenter le bouton Google Login dans mon application react en utilisant une bibliothèque open source appelée react-google-login . J'ai pu mettre en place le serveur backend en utilisant python flask. J'héberge ma méthode d'api sur l'api sur Heroku : http://arrangement-server.herokuapp.com/login . Et mon application react s'exécute avec succès localement, et je suis capable d'utiliser le bouton de connexion. Mais mon problème est que mon serveur affiche l'erreur suivante :

Method not Allowed.

Est-ce parce qu'il s'agit d'une post-méthode ?

Pourquoi mon serveur m'indique-t-il que cette méthode n'est pas autorisée ?

enter image description here

Même si, du côté client, tout fonctionne bien et que je peux voir le profil et les informations de l'utilisateur.

Voici le code de mon serveur backend, vous pouvez le trouver à l'adresse suivante Github :

@app.route("/login", methods=['POST'])
def login():
    data = request.json
    session['access_token'] = data['access_token'], ''
    return jsonify({'message':'You are logged in.'})

3voto

Zhorzh Alexandr Points 66

Votre point d'accès "login" n'acceptera que des requêtes HTTP de type "POST". A cause de cette ligne :

@app.route("/login", methods=['POST'])

Lorsque vous essayez d'ouvrir votre page dans un navigateur, celui-ci envoie une requête HTTP "GET" à cette URL.

C'est pourquoi vous obtenez l'erreur "Method Not Allowed". Jetez un coup d'œil à ma réponse sur upwork pour plus de détails.

2voto

Top.Talented Points 36

Votre serveur heroku n'est qu'un serveur backend. Et la route "/login" n'accepte que les requêtes POST. Vous ne pouvez donc pas envoyer de requête GET à cette route dans votre navigateur web. Si vous voulez voir la réponse de cette route, vous pouvez envoyer une requête POST en utilisant POSTMAN.

-1voto

Je pense que cette partie

@app.route("/")
def home_page():
    access_token = session.get('access_token')
    if access_token is None:
        return redirect(url_for('login'))

Il faut toujours forcer l'utilisateur à visiter la page de connexion avec la méthode GET. Malheureusement, vous n'avez pas défini de méthode et de route pour gérer cette méthode GET.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X