在发出 OAuth 令牌交换请求时,如何进行深层链接并导航到“LogInLoading”屏幕?
Posted
技术标签:
【中文标题】在发出 OAuth 令牌交换请求时,如何进行深层链接并导航到“LogInLoading”屏幕?【英文标题】:How do I deep link and navigate to a "LogInLoading" screen while the OAuth token exchange request is made? 【发布时间】:2019-07-19 21:36:07 【问题描述】:配置我的应用以使用 OAuth。一旦我从重定向 uri 中获得了 auth_code,我希望用户被带到“登录加载”页面,在发生令牌交换请求时会显示加载微调器。
该应用已正确配置 ios 端以允许深度链接,我被带回该应用,只是到了错误的页面。
我关注了来自 React Navigation 的 the official 深度链接指南,以及各种 Stack Overflow 页面和 Medium 文章。
这是我的App.tsx
组件:
const prefix = 'myapp://'
export const App = () =>
return (
<ThemeProvider theme=theme>
<Routes uriPrefix=prefix />
</ThemeProvider>
)
这是我的Routes.ts
:
const AuthStack = createStackNavigator( Onboarding: OnboardingFlowScreen, SignIn: SignInScreen )
const AppTabBar = createBottomTabNavigator( Feed: FeedScreen, Create: CreateScreen, Profile: ProfileScreen )
export const Routes = createAppContainer(
createSwitchNavigator(
AuthLoading: AuthLoadingScreen,
LogInLoading: screen: LogInLoadingScreen, path: 'auth_success' ,
App: AppTabBar,
Auth: AuthStack,
)
)
我应该被带回应用程序并导航到LogInLoading
屏幕。我是不是误会了? Linking.openURL('myapp://auth_success')
不应该带我到指定路径auth_success
的页面吗?
【问题讨论】:
你找到安卓的修复了吗?因为我也面临同样的问题 【参考方案1】:该 URL 只能启动您的应用程序。
要将用户带到特定屏幕,您需要提供基于 URL 的导航上下文。
每当您的应用通过远程 URL 打开时,您都会在 AppDelegate
方法中收到回调 AppDelegate.application(_:open:options:)
在这里您可以导航到您想要的屏幕。
Offocial Apple Documentation on URL Scheme
在此处参考问题IOS: Load a View Controller When App is Launched from Browser using url schemes?
【讨论】:
以上是关于在发出 OAuth 令牌交换请求时,如何进行深层链接并导航到“LogInLoading”屏幕?的主要内容,如果未能解决你的问题,请参考以下文章
OAuth2 - 检索令牌时 OPTIONS 请求的状态 401
使用 Spring Security OAuth2 进行访问令牌请求的 JWT 不记名交换
Laravel OAuth2 Passport API,生成令牌但无法发出请求:“未经身份验证”