使用SwiftInstagram 1.0.6获取Instagram粉丝列表时遇端点停用错误
解决Instagram获取粉丝列表时的"This endpoint has been retired"错误
你遇到的这个错误本质很明确:你用的SwiftInstagram 1.0.6版本调用的旧版Instagram REST API端点已经被官方彻底废弃了,Instagram现在已经完成了API体系的迭代,旧的用户粉丝列表接口早就停止服务了。下面给你具体的解决思路和方案:
一、先搞清楚核心限制
首先要明确:Instagram现在对粉丝列表的获取权限有严格的区分:
- 普通个人用户:出于隐私政策要求,第三方应用完全无法获取个人用户的粉丝/关注列表,这个是平台强制限制,没有绕过的可能。
- 认证的业务账户/创作者账户:只能通过Instagram Graph API(整合在Facebook开发者平台下)来获取粉丝数据,且需要申请对应的权限。
二、具体解决步骤
1. 检查你的应用类型与权限
如果你的应用是面向业务/创作者用户,需要先完成以下操作:
- 在Facebook开发者平台注册你的应用,并关联Instagram业务账户。
- 申请并通过审核必要的权限:比如
instagram_basic、instagram_manage_insights、pages_show_list等(具体权限根据你的需求调整)。 - 获取符合要求的长期
access_token(Graph API的令牌机制和旧REST API完全不同)。
2. 替换旧的第三方库或手动调用新API
SwiftInstagram 1.0.6是基于旧REST API开发的,已经完全不适配当前的API规范,你有两个选择:
- 查看
SwiftInstagram的最新版本,如果有更新到支持Graph API的版本,可以升级后按照新的文档调整代码。 - 放弃第三方库,手动通过
URLSession调用Graph API,下面是一个简单的示例代码:
func fetchBusinessAccountFollowers(instagramUserId: String, accessToken: String, completion: @escaping (Result<[String: Any], Error>) -> Void) { // 构建Graph API请求URL,这里用v18.0(截至2024年的最新稳定版) guard let url = URL(string: "https://graph.facebook.com/v18.0/\(instagramUserId)/followers?access_token=\(accessToken)&fields=id,username,profile_picture_url") else { completion(.failure(NSError(domain: "InvalidRequest", code: -1, userInfo: [NSLocalizedDescriptionKey: "无效的请求URL"]))) return } let task = URLSession.shared.dataTask(with: url) { data, response, error in if let error = error { completion(.failure(error)) return } guard let data = data else { completion(.failure(NSError(domain: "EmptyData", code: -2, userInfo: [NSLocalizedDescriptionKey: "未获取到返回数据"]))) return } do { let responseJSON = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] completion(.success(responseJSON ?? [:])) } catch { completion(.failure(error)) } } task.resume() }
3. 面向个人用户的应对方案
如果你的应用是服务普通个人用户,那么只能调整功能设计:
- 移除获取粉丝列表的功能,避免触发无效请求。
- 引导用户将个人账号转为业务/创作者账号,再使用相关功能(但需要用户自愿操作)。
三、额外注意事项
- Graph API的版本会定期更新,要确保使用当前的稳定版本(比如v18.0及以上),旧版本的Graph API端点也会被逐步废弃。
- 长期
access_token需要定期刷新,否则会失效,要在代码中处理令牌刷新逻辑。 - 所有权限都需要通过Facebook开发者平台的应用审核才能正式使用,测试阶段可以用测试账户进行验证。
内容的提问来源于stack exchange,提问作者Pramod More




