用魔搭账号登录你的应用:ModelScope OAuth 统一身份接入指南

简介: 魔搭社区正式开放OAuth 2.0/OIDC统一登录能力,支持一键授权、获取用户信息、代理操作及细粒度权限控制。AI Skill可自动完成接入与部署,4步即可集成,助应用无缝融入2000万+开发者生态。

让你的应用接入魔搭社区 2000万+开发者生态。

1、为什么需要统一账号登录?

你是否遇到过这些场景:

  • 在魔搭创空间部署了一个 Web 应用,希望直接复用魔搭的用户体系
  • 想知道"谁在用我的应用",但缺乏身份识别能力
  • 用户反馈"又要记一套密码",注册转化率低

现在,魔搭社区已正式开放 OAuth 2.0 / OIDC 统一身份认证能力。你的应用只需接入几行代码,用户就能通过魔搭账号一键登录 — 无需额外注册,即来即用。

2、它能做什么?

魔搭 OAuth 基于标准的 OAuth 2.0 协议和 OIDC(OpenID Connect)身份认证协议,支持:

能力

说明

一键登录

用户点击"用魔搭账号登录",跳转魔搭授权页,授权后自动回到你的应用

获取用户信息

获取用户名、昵称、头像等公开信息(scope: profile

代理操作

经用户授权,可代表用户读取私有仓库、管理MCP 服务,其余服务正在陆续公开中

权限可控

用户随时可在魔搭的访问控制页面撤回授权

完整的授权范围(scope)列表和 OpenAPI 文档见:魔搭 OAuth 接入文档

3、最快接入方式:让 AI 帮你写

如果你使用 Cursor 等支持 Agent Skill 的 AI 编程工具,最快的接入方式是让 AI 直接帮你完成。我们准备了两个开箱即用的 Skill:

Skill 1:ModelScope OAuth 接入

Skill 地址:

https://modelscope.cn/skills/@ModelScope/modelscope-oauth-skill

安装这个 Skill 后,你只需要告诉 AI:

"给我的应用接入魔搭账号登录"

AI 就会按照最佳实践,自动完成后端接口和前端页面的编写,包括:

  • OAuth 授权 URL 生成
  • 回调处理与 Token 交换
  • 用户信息获取与入库
  • 创空间反向代理的适配

Skill 2:魔搭创空间部署

Skill 地址:

https://modelscope.cn/skills/@hicicada/modelscope-studio-deploy

帮助你将应用打包并部署到魔搭创空间,包括 Dockerfile 编写、持久化存储配置、端口设置等。

两个 Skill 配合使用,从开发到部署到接入登录,AI Agent 可以端到端完成。

4、演示案例

demo:

我们以一个创空间部署为例,完整演示如何接入魔搭 OAuth。

体验地址:https://modelscope.cn/studios/modelscope/modelscope-oauth-demo

用户打开应用后,只需点击"使用 ModelScope 账号登录",即完成 OAuth 授权和测试各类授权后接口。

真实案例:

我们以一个真实项目 — "魔搭共建者共创平台" 为例,也同步邀请魔搭的共建者来真实提交相关议题和痛点。

体验地址:

https://www.modelscope.cn/studios/MSEO/ModelScopeBuilders(体验密码:2022)


如果你想了解背后的原理,或者需要手动接入,请继续阅读。

5、手动接入:4 步详解

第一步:注册 OAuth 互联应用

  1. 登录 魔搭社区,进入 首页 → 访问控制 → 互联应用
  2. 创建新应用,填写名称和回调地址
  3. 获取 Client IDClient Secret

重要:回调地址(Redirect URI)应使用创空间的 host 地址(如 https://your-app.ms.show\),而不是 modelscope.cn/studios/... 路径。详见下方"踩坑指南"。

第二步:后端 — 生成授权 URL

当用户点击登录时,后端生成一个跳转到魔搭授权页的 URL:

// Node.js / Express
app.get('/api/auth/oauth/url', (req, res) => {
  const redirectUri = req.query.redirect_uri
  const state = crypto.randomUUID()
  const params = new URLSearchParams({
    client_id: process.env.OAUTH_CLIENT_ID,
    redirect_uri: redirectUri,
    response_type: 'code',
    scope: 'openid profile',
    state,
  })
  res.json({
    url: `https://www.modelscope.cn/oauth/authorize?${params}`,
    state,
  })
})

第三步:后端 — 处理回调,获取用户信息

用户在魔搭授权后,会被重定向回你的应用,URL 中携带 code 参数。后端用这个 code 换取 access_token,再用 token 获取用户信息:

app.post('/api/auth/oauth/callback', async (req, res) => {
  const { code, redirect_uri } = req.body
  // 1. code → access_token
  const tokenRes = await fetch('https://www.modelscope.cn/oauth/token', {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: new URLSearchParams({
      grant_type: 'authorization_code',
      client_id: process.env.OAUTH_CLIENT_ID,
      client_secret: process.env.OAUTH_CLIENT_SECRET,
      code,
      redirect_uri,
    }),
  })
  const { access_token } = await tokenRes.json()
  // 2. access_token → 用户信息(二选一)
  // 方式 A:OIDC 标准 userinfo 端点(推荐)
  const userRes = await fetch('https://www.modelscope.cn/oauth/userinfo', {
    headers: { Authorization: `Bearer ${access_token}` },
  })
  const userInfo = await userRes.json()
  // userInfo: { sub, name, preferred_username, picture, email, ... }
  // 方式 B:OpenAPI 端点(返回更多魔搭平台字段)
  // const userRes = await fetch('https://modelscope.cn/openapi/v1/users/me', {
  //   headers: { Authorization: `Bearer ${access_token}` },
  // })
  // const { data } = await userRes.json()
  // data: { username, nickname, avatar_url, email, description }
  // 3. 在你的数据库中创建或更新用户
  // ...
  res.json(user)
})

第四步:前端 — 触发登录 & 处理回调

// 发起登录
const handleLogin = async () => {
  const redirectUri = window.location.origin  // 关键:使用前端真实地址
  const { url } = await fetch(
    `/api/auth/oauth/url?redirect_uri=${encodeURIComponent(redirectUri)}`
  ).then(r => r.json())
  window.location.href = url  // 跳转到魔搭授权页
}
// 页面加载时检测回调
useEffect(() => {
  const code = new URLSearchParams(window.location.search).get('code')
  if (!code) return
  fetch('/api/auth/oauth/callback', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      code,
      redirect_uri: window.location.origin,
    }),
  })
    .then(r => r.json())
    .then(user => {
      // 登录成功,存储用户信息
      window.history.replaceState({}, '', window.location.pathname)
    })
}, [ ])

就这么简单。 四步完成,你的应用就拥有了魔搭社区的统一身份能力。

6、避坑指南:创空间部署的特殊注意

在实际将"共建者共创平台"部署到魔搭创空间的过程中,我们积累了一些有价值的经验:

1. redirect_uri 必须由前端提供

创空间的容器运行在反向代理后面,后端通过 req.headers['host']不是真实 host,需通过 x-forwarded-host 获取,参考 这里

2. Client Secret 不要写死在代码里

通过创空间的环境变量注入 OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET,不要提交到代码仓库。

3. 回调地址使用 host 域名

创空间应用有两种访问方式:

类型

示例

OAuth 兼容性

Studio 路径

https://modelscope.cn/studios/owner/name\

❌ 不适用

host 地址

https://owner-name.ms.show\

✅ 推荐

两者的对应关系:Studio 路径中的 owner/name 拼接为 owner-name,即 host 地址为 https://{owner}-{name}.ms.show。例如:

注意:owner 和 name 中的大写字母在 host 地址中会转为小写

OAuth 重定向 URL 必须使用 host 地址,因为 Studio 路径是通过 modelscope.cn 的 iframe 嵌入的,window.location.origin 返回的是 https://modelscope.cn\ 而非应用自身地址,无法用于 OAuth 回调。

7、更多授权能力

除了基础的用户身份信息,魔搭 OAuth 还支持更丰富的授权范围:

scope

能力

典型场景

openid

获取 id_token 和 access_token

基础身份认证

profile

获取用户名、昵称、头像等

用户展示

read-repos

读取用户的模型和数据集

资产管理工具

manage-mcp-deployment

管理用户的 MCP 服务部署

MCP 管理平台

list-operational-mcp

获取用户已部署的 MCP 服务

MCP 仪表盘

更多 scope 持续开放中。

8、总结

维度

说明

接入成本

Skill 模式:一句话搞定;手动模式:前后端各 20 行代码

协议标准

OAuth 2.0 + OIDC,行业通用

用户体验

一键授权,无需注册

安全机制

授权码模式 + 可随时撤回

扩展性

丰富的 scope,持续开放更多 API

如果你正在魔搭创空间上构建应用,不妨试试接入魔搭 OAuth — 让你的用户少记一个密码,让你的应用融入千万开发者生态。


相关链接:

目录
相关文章
|
12天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34712 34
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
7天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
7213 22
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
24天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
45577 151
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
2天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
1230 13
|
14天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
5474 21
|
2天前
|
云安全 人工智能 供应链
|
7天前
|
机器学习/深度学习 存储 人工智能
还在手写Skill?hermes-agent 让 Agent 自己进化能力
Hermes-agent 是 GitHub 23k+ Star 的开源项目,突破传统 Agent 依赖人工编写Aegnt Skill 的瓶颈,首创“自我进化”机制:通过失败→反思→自动生成技能→持续优化的闭环,让 Agent 在实践中自主构建、更新技能库,持续自我改进。
1399 4

热门文章

最新文章

下一篇
开通oss服务