EXPO-AUTH-SESSION-返回应用程序的两个应用程序选项

lc8prwob  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(130)

SDK版本:43.0.0

平台(Android/iOS/Web/All):Android

你好,我正在使用托管工作流中的expo-auth-Session通过其官方API收集Instagram用户数据,它在开发环境下运行良好(通过“expo run:Android”命令),但一旦用户进行授权过程和重定向启动时创建了一个构建APK,就会出现一个弹出窗口,询问“打开方式”和我的应用程序的两个选项,第一个运行得很好,第二个返回应用程序,但什么都不起作用,我没有在iOS上测试。

下面是代表它的图像:Click here to see

当我在开发时,我试图执行Google登录过程,但陷入了相同的错误,通过实现Google本地登录部分解决了这一问题。我在app.json中验证了我的方案,但没有在上面发现错误,如下所示:

App.json:

{
    "expo": {
        "name": "Secreet",
        "slug": "secreet",
        "version": "1.0.0",
        "orientation": "portrait",
        "icon": "./assets/icon.png",
        "scheme": "com.davidtmiranda.secreet",
        "splash": {
            "image": "./assets/splash.png",
            "resizeMode": "contain",
            "backgroundColor": "#ffffff"
        },
        "updates": {
            "fallbackToCacheTimeout": 0
        },
        "assetBundlePatterns": ["**/*"],
        "ios": {
            "supportsTablet": true,
            "usesAppleSignIn": true,
            "bundleIdentifier": "com.davidtmiranda.secreet",
            "googleServicesFile": "./GoogleService-Info.plist",
            "config": {
                "googleSignIn": {
                    "reservedClientId": "com.googleusercontent.apps.--------------------"
                }
            }
        },
        "android": {
            "versionCode": 1,
            "adaptiveIcon": {
                "foregroundImage": "./assets/adaptive-icon.png",
                "backgroundColor": "#FFFFFF"
            },
            "package": "com.davidtmiranda.secreet",
            "googleServicesFile": "./google-services.json"
        },
        "web": {
            "favicon": "./assets/favicon.png"
        }
    }
}

另外,我的authSession代码如下所示:

webBrowser.maybeCompleteAuthSession();
    const useProxy = Platform.select({ web: false, default: true });

    const client_id = ---;
    const redirect_uri = "https://auth.expo.io/@davidtmiranda/secreet";
    const scope = "user_profile";

    const site =
        "https://api.instagram.com/oauth/authorize?client_id=" +
        client_id +
        "&redirect_uri=" +
        redirect_uri +
        "&scope=" +
        scope +
        "&response_type=code&state=1";

    const discovery = { authorizationEndpoint: site };

    const [request, response, promptAsync] = useAuthRequest(
        {
            redirectUri: makeRedirectUri({
                useProxy,
                native: redirect_uri,
            }),
            scopes: [scope],
            clientId: String(client_id),
        },
        discovery
    );

    useEffect(() => {
        if (response?.type === "success") {
       ...
        } 
    }, [response]);

    function GetInstagramID() {
        return promptAsync({
            useProxy,
        });
    }

对如何解决这个问题有什么建议吗?我认为这是与架构相关的,但无法确定哪里出了问题。

idv4meu8

idv4meu81#

也许您可以尝试删除app.json中的scheme

"scheme": "com.davidtmiranda.secreet",

并且它将更改android/app/build.gradle中的appAuthRedirectScheme

manifestPlaceholders = [appAuthRedirectScheme: 'com.davidtmiranda.secreet']

它解决了我的问题。

相关问题