Expo-Auth-Session hält mit der Pixelfed-Anmeldung nie das VersprechenJavaScript

Javascript-Forum
Guest
 Expo-Auth-Session hält mit der Pixelfed-Anmeldung nie das Versprechen

Post by Guest »

Ich versuche, mich mit dem expo-auth-session-Paket bei einer Pixelfed-Instanz anzumelden. Ich komme zum Pop-up und der Code wird angezeigt, nachdem ich meine App im Pop-up autorisiert habe. Das Versprechen wird jedoch nie erfüllt. Wenn ich das Fenster schließe, komme ich zum Dismiss-Teil des Versprechens, aber das war's.

Code: Select all

import React, { useState, useEffect } from 'react';
import { View, ActivityIndicator, Platform, Button } from 'react-native';
import { WebView } from 'react-native-webview';
import * as WebBrowser from 'expo-web-browser';
import * as AuthSession from 'expo-auth-session';
import * as Linking from "expo-linking"

export default function OAuthLoginScreen({ route, navigation }) {
const [syncRunning, setSyncRunning] = useState(false);

const {
serverUrl,
authUrl,
tokenUrl,
tmpRedirectUri,
clientId,
scopes,
handleAuth
} = route.params;

const discovery = {
authorizationEndpoint: authUrl,
tokenEndpoint: tokenUrl
};

if(tmpRedirectUri === undefined || tmpRedirectUri === null){
redirectUri = AuthSession.makeRedirectUri({
scheme: 'myapp',
});
} else {
redirectUri = tmpRedirectUri;
}

const options = {
clientId: clientId,
redirectUri: redirectUri,
scopes: scopes
};

const [request, response, promptAsync] = AuthSession.useAuthRequest(
options,
discovery
);

if(request && !syncRunning){
setSyncRunning(true)
promptAsync()
}

useEffect(() => {
if (response?.type === 'success') {
const { code } = response.params;
handleAuth(serverUrl, result.url, navigation);
}
}, [response]);

return (



);

}
Ich hatte das gleiche Problem, als ich versuchte, es auch mit dem Paket expo-web-browser zu implementieren. Ein Problem besteht meiner Meinung nach darin, dass Pixelfed urn:ietf:wg:oauth:2.0:oob als Wert für die Weiterleitungs-URI benötigt. Andernfalls wird ein Fehler „Ungültiger Client“ angezeigt. Daher funktioniert der Tanz mit tmpRedirectUri als Instagram mit der richtigen Uri.
Stimmt es, dass ein HTTPS-Entwicklungsserver benötigt wird? Wenn ja, wie kann dies mit dem Metro-Bundler erreicht werden? Das Flag --https öffnet keine https-Sitzung. Ich möchte nicht zum Webpack zurückkehren, da es veraltet zu sein scheint. Ich habe es auch mit ǹgrok versucht, das https ermöglicht, aber auch das hat nicht funktioniert.
Wenn derselbe Code mit dem oauth-Anmeldefluss von Instagram verwendet wird, es funktioniert genau wie es sollte.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post