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

在SharePoint Online中使用ADAL实现Yammer JS SDK身份验证

我确实帮不少客户实现过这两个场景,分享下实操经验:

1. Azure AD应用通过ADAL令牌调用Yammer API的成功案例

当然有成熟的落地案例,核心是把Azure AD令牌与Yammer API的权限体系对应起来,关键步骤如下:

  • 权限配置核心:确保Azure AD应用已添加Yammer的委托权限(比如User.Read、Group.Read.All等),并且完成了权限同意(租户级管理员同意会更顺畅,避免每个用户手动授权)。
  • 令牌获取的关键参数:用ADAL获取令牌时,必须指定Yammer API的资源标识符为https://api.yammer.com,否则令牌的受众(aud字段)不匹配,调用会直接失败。示例代码片段:
var authContext = new AuthenticationContext("https://login.microsoftonline.com/your-tenant-id");
authContext.acquireToken("https://api.yammer.com", "your-client-id", "https://your-redirect-uri", function(error, tokenResponse) {
  if (!error) {
    // 用获取到的token调用Yammer API
    fetch("https://api.yammer.com/api/v1/users/current.json", {
      headers: { "Authorization": `Bearer ${tokenResponse.accessToken}` }
    })
    .then(res => res.json())
    .then(data => console.log("当前Yammer用户信息:", data));
  }
});
  • 避坑提示:部分旧版Yammer API端点不支持Azure AD令牌,尽量使用v1版本的最新端点;另外,调用某些需要管理员权限的Yammer接口时,要确保当前用户本身拥有Yammer的对应管理员权限。
2. SharePoint Online中实现Yammer静默身份验证

完全可以实现,核心是利用用户已有的SPO登录会话,通过MSAL/ADAL的静默令牌获取能力,无需用户重复输入密码。实操要点:

  • 应用注册配置:在Azure AD中注册应用时,把重定向URI设置为你的SPO站点URL(比如https://contoso.sharepoint.com/sites/your-team-site),同时添加Yammer的委托权限并完成同意。
  • SPO页面内的实现方式:可以通过SPFx WebPart集成,也可以在普通页面中注入脚本。示例静默获取令牌的代码(用MSAL.js):
const msalConfig = {
  auth: {
    clientId: "your-client-id",
    authority: "https://login.microsoftonline.com/your-tenant-id",
    redirectUri: "https://contoso.sharepoint.com/sites/your-team-site"
  }
};
const msalInstance = new msal.PublicClientApplication(msalConfig);

// 尝试静默获取令牌
msalInstance.acquireTokenSilent({
  scopes: ["https://api.yammer.com/User.Read"],
  account: msalInstance.getAllAccounts()[0]
})
.then(tokenResponse => {
  console.log("静默获取Yammer令牌成功", tokenResponse.accessToken);
  // 后续调用Yammer API逻辑
})
.catch(error => {
  // 静默失败(比如会话过期),触发交互式登录
  if (error instanceof msal.InteractionRequiredAuthError) {
    msalInstance.acquireTokenPopup({ scopes: ["https://api.yammer.com/User.Read"] })
    .then(popupToken => console.log("弹出登录获取令牌成功", popupToken.accessToken));
  }
});
  • 限制说明:静默获取仅在用户当前有有效Azure AD会话(已登录SPO)时生效;如果SPO站点禁用了自定义脚本,需要先开启该权限才能注入代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:07:17