如何实现InstagramBasicDisplay的PHP Callback获取Code以获取AccessToken?
实现Instagram Basic Display回调获取Code与Access Token
步骤1:修正重定向URI配置
把初始化InstagramBasicDisplay时的redirectUri替换成你自己服务器上的回调页面地址,比如https://你的域名.com/instagram-callback.php。同时要确保这个地址已经在Facebook开发者后台的Instagram应用配置中添加为有效重定向URI。
步骤2:创建回调页面(instagram-callback.php)
在服务器上新建这个回调文件,代码逻辑如下:
<?php // 引入封装包的自动加载文件(根据你的实际路径调整) require 'vendor/autoload.php'; use EspressoDev\InstagramBasicDisplay\InstagramBasicDisplay; // 初始化实例,参数和登录页面保持一致 $instagram = new InstagramBasicDisplay([ 'appId' => 'XXXXX', // 替换为你的App ID 'appSecret' => 'XXXX', // 替换为你的App Secret 'redirectUri' => 'https://你的域名.com/instagram-callback.php' // 和上面设置的地址完全一致 ]); // 检查URL中是否存在code参数 if (isset($_GET['code'])) { try { // 用code换取access token $accessToken = $instagram->getAccessToken($_GET['code']); // 这里可以把access token存入数据库或缓存,后续用来调用洞察API echo "Access Token: " . $accessToken; // 可选:验证token有效性,获取用户基础信息 $userProfile = $instagram->getUserProfile(); print_r($userProfile); // 后续可通过access token调用洞察接口,比如获取用户洞察数据 // $userInsights = $instagram->getUserInsights(...); } catch (Exception $e) { echo "授权出错:" . $e->getMessage(); } } else { // 无code参数说明授权失败或用户取消授权 echo "授权失败,未获取到code参数"; } ?>
步骤3:调整登录页面代码
确保登录页面的redirectUri和回调页面地址完全匹配,同时指定获取洞察数据所需的权限:
<?php require 'vendor/autoload.php'; use EspressoDev\InstagramBasicDisplay\InstagramBasicDisplay; $instagram = new InstagramBasicDisplay([ 'appId' => 'XXXXX', 'appSecret' => 'XXXX', 'redirectUri' => 'https://你的域名.com/instagram-callback.php' // 与回调页面地址一致 ]); // 生成登录URL时,必须包含insights权限才能获取洞察数据 $loginUrl = $instagram->getLoginUrl(['user_profile', 'user_media', 'insights']); echo "<a href='{$loginUrl}'>Login with Instagram</a>"; ?>
关键注意事项
- 必须在Facebook开发者后台的产品 > Instagram Basic Display > 有效重定向URI中添加你的回调页面地址,否则会触发授权失败。
- 获取洞察数据依赖
insights权限,生成登录URL时务必包含该权限。 - Access Token有过期时间,可通过封装包提供的方法刷新,避免失效。
内容的提问来源于stack exchange,提问作者TharakaNirmana
相关产品推荐
相关产品推荐

