You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取被标记图片所有者用户名时遇Instagram API令牌错误

问题分析与解决

核心问题1:API端点地址错误

你请求me/tags时用了Facebook的API地址(https://graph.facebook.com/),但me/tags是Instagram Graph API的专属端点,Facebook的API无法识别IG开头的Instagram用户令牌,这直接导致了Invalid OAuth access token错误。而me/media能成功是因为你用了正确的Instagram API地址。

核心问题2:权限缺失(可能)

获取自己被标记的内容需要user_tags权限,如果你申请令牌时没有包含这个权限,即使地址正确也会报错。而me/media只需要user_media权限,所以之前能正常请求。

具体修复步骤

1. 修正API端点地址

修改fullTagUrl的生成逻辑,改用Instagram的Base API地址:

// 原错误代码
string fullTagUrl = $"{this.facebookBaseAPIUrl}{tagUrl}";

// 修改后
string fullTagUrl = $"{this.instagramBaseAPIUrl}{tagUrl}";

2. 确认令牌权限

检查你的Instagram用户令牌是否包含user_tags权限:

  • 登录Facebook开发者后台,进入你的应用
  • 找到应用的Instagram Graph API权限配置,确保user_tags已被添加并通过审核
  • 如果缺少该权限,重新生成包含user_tags的用户令牌

3. 验证令牌有效性

虽然me/media能成功,但建议确认令牌未过期:

  • 调用https://graph.instagram.com/debug_token?input_token=你的IG令牌&access_token=你的应用令牌(用应用令牌验证用户令牌),查看令牌的权限和过期时间

修改后的完整Service代码

public class SocialFeedService
{
    private readonly string instagramBaseAPIUrl = "https://graph.instagram.com/";

    public string GetInstagramContents(string userToken)
    {
        using (var client = new HttpClient())
        {
            try
            {
                string tagUrl = $"me/tags?fields=id,username&access_token={userToken}";
                string fullTagUrl = $"{this.instagramBaseAPIUrl}{tagUrl}";

                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var response = client.GetStringAsync(new Uri(fullTagUrl)).Result;

                return string.IsNullOrEmpty(response) ? string.Empty : response;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
 }

内容的提问来源于stack exchange,提问作者hassysl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:55:19