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

基于PHP的Telegram Bot对接Instagram账号后,如何合规获取用户点赞/关注数据并实现奖励机制?

基于PHP的Telegram Bot对接Instagram账号后,如何合规获取用户点赞/关注数据并实现奖励机制?

嘿,我完全懂你的痛点——想用Telegram Bot做奖励机制,但Instagram的API权限卡得死,爬虫又怕违规被封。先给你梳理下核心逻辑,再一步步给你合规的解决方案:

一、先搞清楚官方API的权限边界

你目前用的Basic Display API是给个人用户/普通创作者设计的,权限非常有限,只能获取用户基本资料、公开发布内容这类基础数据,根本碰不到“谁关注了我”“谁点赞了我的帖子”这类涉及用户行为隐私的信息。而Graph API(针对企业/创作者账号)虽然有部分权限,但也不是随便就能拿,得先满足账号类型和权限申请要求。

二、合规检测用户是否关注你的Instagram主页

这个是可以通过官方API实现的,前提是你把账号升级为企业账号或创作者账号(免费,在Instagram设置里就能转),然后走以下步骤:

  1. 在Facebook开发者平台创建应用并关联账号
    去Facebook开发者后台建一个应用,把你的Instagram企业账号绑定进去,然后申请这几个核心权限:instagram_basic、pages_read_engagement、pages_show_list。注意权限申请要如实填写用途,不然容易被拒。

  2. 调用Graph API检测关注关系
    你已经通过Basic Display API拿到了用户的Instagram ID,接下来可以调用Graph API的/{用户Instagram ID}/follows端点,检查返回的列表里是否包含你的Instagram主页ID。如果有,就说明用户关注了你。

    给你一段PHP示例代码(用Facebook官方SDK):

    require_once __DIR__ . '/vendor/autoload.php';
    
    $fb = new Facebook\Facebook([
      'app_id' => '你的应用ID',
      'app_secret' => '你的应用密钥',
      'default_graph_version' => 'v18.0', // 建议用最新版本号
    ]);
    
    $userInstagramId = '用户的Instagram ID'; // 从Basic Display API获取
    $yourPageId = '你的Instagram主页ID';
    $userAccessToken = '用户授权后的access_token'; // 从Basic Display API获取
    
    try {
      // 获取用户关注的账号列表
      $response = $fb->get("/{$userInstagramId}/follows?fields=id", $userAccessToken);
      $follows = $response->getGraphEdge();
      
      $isFollowing = false;
      foreach ($follows as $follow) {
        if ($follow['id'] === $yourPageId) {
          $isFollowing = true;
          break;
        }
      }
      
      if ($isFollowing) {
        // 这里写给用户加奖励积分的逻辑
        echo "用户已关注,奖励积分!";
      } else {
        echo "请先关注我们的Instagram主页哦!";
      }
    } catch(Facebook\Exceptions\FacebookResponseException $e) {
      echo "Graph API调用出错: " . $e->getMessage();
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
      echo "SDK初始化出错: " . $e->getMessage();
    }
    

三、合规检测用户是否点赞了你的帖子(重点:官方API不支持直接获取)

Instagram出于隐私保护,任何官方API都不允许获取具体哪些用户点赞了某条帖子——哪怕是企业账号也不行。所以你得换个思路,用合规的互动方式替代“点赞”检测:

替代方案1:用“评论关键词”作为参与凭证

发布帖子时,要求用户评论特定关键词(比如“我要奖励”),然后通过Graph API的/{帖子ID}/comments端点获取所有评论,检查用户的Instagram ID是否出现在评论列表里。这种方式完全合规,因为评论是公开内容,API允许获取。

PHP示例代码:

$mediaId = '你的帖子ID';
$pageAccessToken = '你的主页access_token'; // 从Facebook开发者后台获取

try {
  $response = $fb->get("/{$mediaId}/comments?fields=from{id}", $pageAccessToken);
  $comments = $response->getGraphEdge();
  
  $userCommented = false;
  foreach ($comments as $comment) {
    if ($comment['from']['id'] === $userInstagramId) {
      $userCommented = true;
      break;
    }
  }
  
  if ($userCommented) {
    // 给用户加奖励积分
    echo "用户已参与评论,奖励积分!";
  }
} catch(Exception $e) {
  echo "获取评论出错: " . $e->getMessage();
}

替代方案2:用Instagram互动贴纸(问答/投票)

发布帖子时添加问答或投票贴纸,用户参与后,你可以通过Graph API的/{帖子ID}/insights端点获取参与用户的数据(需要企业账号权限),然后匹配用户的Instagram ID来发奖励。这种方式体验更好,也完全合规。

替代方案3:人工审核截图(万不得已的选择)

引导用户在Telegram Bot里发送已点赞/关注的截图,然后人工审核。虽然体验差,但绝对合规,适合用户量小的场景。

四、绝对要避免的坑:不要用爬虫!

Instagram的反爬机制非常严格,哪怕是小规模的爬取,只要被检测到,你的Instagram账号(包括关联的应用账号)会被立刻封禁,甚至永久shadow ban。而且违反Instagram的服务条款,后续申诉基本没用,所以绝对不要碰爬虫。

最后总结

  • 关注检测:升级为企业/创作者账号,用Graph API合规实现;
  • 点赞检测:用评论、互动贴纸等替代方案绕开API限制;
  • 永远不要用爬虫,否则得不偿失。

备注:内容来源于stack exchange,提问作者Cesare Diodato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 14:19:39