React Native中Axios调用Yelp API出现401错误求助
解决Yelp API 401未授权错误及React Native调用问题
错误原因
401状态码明确表示请求未通过授权,你的猜测完全正确——Udemy课程提供的旧API Key已经失效或被原作者撤销。Yelp API Key与开发者账号绑定,不允许共享,且存在有效期和请求限额限制,必须使用个人专属Key。
解决步骤
1. 获取个人Yelp API Key
- 登录Yelp开发者平台(使用普通Yelp账号即可注册/登录)
- 进入「Create App」页面,填写应用名称、描述等基础信息
- 创建完成后,在应用详情页即可获取你的专属API Key(标注为「API Key」或「Bearer Token」)
2. 替换代码中的API Key
修改你的Yelp API配置文件(api/Yelp.js),将Authorization头中的Bearer令牌替换为自己的API Key:
import axios from 'axios' export default axios.create({ baseURL:'https://api.yelp.com/v3/businesses', // 建议改用HTTPS headers:{ Authorization: "Bearer 你的个人API_KEY", } })
注意:确保Bearer与Key之间有一个空格,格式不能出错
3. 修复未处理的Promise拒绝错误
你的searchApi函数缺少错误捕获逻辑,导致出现Possible Unhandled Promise Rejection警告。添加try-catch块处理请求错误:
const searchApi = async () =>{ try { const response = await Yelp.get('/search',{ params: { limit: 50, term : term, location: 'san jose' } }) setResults(response.data.businesses) } catch (error) { console.error('API请求失败:', error.response?.data?.error?.description || error.message); // 可在此添加用户友好的错误提示,比如显示Toast或文本 } }
4. 验证BaseURL协议
将原代码中的http://api.yelp.com改为https://api.yelp.com,避免HTTP协议可能导致的安全限制或跳转问题。
关于共享API Key的说明
Yelp严格禁止共享API Key,共享会导致双方账号被封禁,且每个Key有月度请求限额。请务必使用自己申请的专属Key,这是唯一合规且可靠的方式。
内容的提问来源于stack exchange,提问作者tatem allies
相关产品推荐
相关产品推荐

