如何获取Jira用户个人头像并在PHP页面正常展示
Jira用户个人头像拉取实现方案
直接跳过通用头像查询接口,该接口依赖额外的头像ID参数、权限校验逻辑更复杂,生产环境优先通过当前用户信息接口获取头像资源,以下是可直接落地的实现逻辑:
- 核心接口:调用
/rest/api/3/myself(Jira Cloud版本)或/rest/api/latest/myself(Jira Server/Data Center版本)获取当前登录用户的完整信息,返回值中avatarUrls字段自带24x24、32x32、48x48、128x128四个尺寸的可访问头像地址 - 鉴权要求:调用接口时必须携带合法鉴权头,共用OAuth2.0登录凭证时使用
Authorization: Bearer {用户access_token},服务端集成调用时使用Authorization: Basic {base64编码的账号邮箱:API Token}
可直接运行的调用示例
Python 版本
import requests import base64 # 替换为你自己的Jira实例地址 JIRA_DOMAIN = "https://your-jira-instance.com" # 替换为对应鉴权凭证 auth_encode = base64.b64encode(b"login_email@example.com:your_api_token").decode() resp = requests.get( url=f"{JIRA_DOMAIN}/rest/api/3/myself", headers={ "Authorization": f"Basic {auth_encode}", "Accept": "application/json" } ) resp.raise_for_status() user_data = resp.json() # 按需取对应尺寸的头像地址即可 avatar_128 = user_data["avatarUrls"]["128x128"]
PHP 版本
<?php $jiraDomain = "https://your-jira-instance.com"; $email = "login_email@example.com"; $apiToken = "your_api_token"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $jiraDomain . "/rest/api/3/myself"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Basic " . base64_encode($email . ":" . $apiToken), "Accept: application/json" ]); $resp = curl_exec($ch); curl_close($ch); $userData = json_decode($resp, true); $avatar128 = $userData["avatarUrls"]["128x128"]; ?>
前端展示避坑说明
直接把接口返回的头像地址放到前端<img>标签的src属性中大概率加载失败,两种成熟处理方案:
- 生产环境优先选后端代理:在自有站点后端新增头像代理路由,前端请求自有站点的头像接口,后端携带鉴权信息从Jira拉取头像二进制流后直接返回给前端,完全规避跨域、凭证泄露、临时链接失效问题
- 测试环境可直接给头像地址拼接合法的临时访问令牌,该方式令牌有效期短,不建议线上使用
常见失败排查项
- 确认Jira版本匹配接口路径:Cloud版本用v3接口,Server/DC版本用latest前缀接口
- 确认调用凭证对应用户拥有
browse users and groups全局权限,无权限时接口返回403,无法拿到完整用户字段 - 不要从Jira前端页面源码中提取头像地址,这类地址携带动态CSRF参数,短时间就会失效
内容的提问来源于stack exchange,提问作者Mads Sander Høgstrup
相关产品推荐
相关产品推荐

