React Native App Auth:如何将Scope设置为可选?
解决React Native App Auth中Scope必填改可选的问题
当然可以修改react-native-app-auth的源码并自定义构建后导入你的项目,我来给你一步步拆解实现方案:
一、修改源码移除Scope的必填校验
克隆库到本地
先把react-native-app-auth的源码克隆到本地目录,方便后续修改。修改JS层的校验逻辑
找到库的JS核心代码(通常在src目录下,比如AuthorizationRequest.js或者index.js),搜索检查Scope必填的代码块,比如类似这样的逻辑:if (!options.scope) { throw new Error('Scope is a required parameter'); }直接删除这段校验,或者改成可选逻辑(比如如果没传scope就默认设为空数组
[]或者空字符串'')。修改原生端的校验逻辑
别忽略了原生端的校验:- iOS端:找到
ios/RNAppAuth目录下的RNAppAuthModule.m或RNAppAuthModule.swift,搜索检查scope的代码,移除对应的必填判断。 - Android端:找到
android/src/main/java/com/rnappauth目录下的RNAppAuthModule.java,同样搜索并移除scope的必填校验逻辑。
- iOS端:找到
二、构建并导入修改后的库到你的项目
安装依赖并准备本地库
进入你克隆并修改好的react-native-app-auth目录,执行:npm install # 或者用yarn yarn install完成依赖安装后,不需要额外打包,直接用本地路径引用即可。
在你的项目中引用本地修改后的库
打开你自己项目的package.json,找到react-native-app-auth的依赖项,把原来的版本号改成本地库的路径,比如:"dependencies": { // ...其他依赖 "react-native-app-auth": "../path-to-your-modified-react-native-app-auth-folder" }路径根据你本地的实际位置调整,确保是正确的相对路径。
重新安装依赖并构建项目
回到你的项目根目录,执行:npm install # 或者yarn install如果是React Native 0.60以下版本,需要手动执行
react-native link react-native-app-auth;0.60+版本会自动link。最后重新运行你的项目:react-native run-ios # 或者 react-native run-android
三、注意事项
- 有些OAuth服务端本身可能还是要求传入Scope,所以即使库端取消了必填校验,你也要根据目标OAuth服务的要求来决定是否传Scope,避免请求失败。
- 建议你fork官方仓库到自己的账号,在fork的版本上做修改,这样后续官方更新时,你可以方便地合并上游代码,避免自己的修改丢失。
- 如果你的项目是Expo管理的项目,需要切换到裸工作流才能使用本地修改的原生库,否则Expo的预构建环境可能无法识别本地依赖。
内容的提问来源于stack exchange,提问作者a3.14_Infinity
相关产品推荐
相关产品推荐

