常见问题
以下是接入墨觉互联过程中常见的问题及解答。
账号与应用
Q1:如何注册开发者账号?
访问墨觉互联首页,点击右上角「注册」按钮,填写用户名、邮箱和密码即可完成注册。注册后自动登录并进入开发者控制台。
Q2:如何创建应用?
登录后进入控制台,点击「创建应用」按钮,填写应用名称、应用描述、图标URL、授权回调地址等信息,提交后应用状态为「待审核」,等待管理员审核通过后即可使用。
Q3:应用审核需要多长时间?
应用审核由平台管理员人工处理,一般在1-3个工作日内完成。审核结果会通过应用状态展示,拒绝时会附上拒绝原因,您可以根据原因修改后重新提交审核。
Q4:AppSecret 泄露了怎么办?
请立即进入控制台 → 应用详情 → 点击「重置密钥」按钮,系统将生成新的 AppSecret 并使旧密钥立即失效。重置后请更新您服务端的配置。
Q5:可以创建多少个应用?
目前没有应用数量限制,您可以根据需要创建多个应用。每个应用有独立的 AppID 和 AppSecret。
OAuth2 授权
Q6:授权码 code 可以使用几次?
授权码 code 只能使用一次,且有效期为10分钟。使用后立即失效,请在获取 code 后尽快调用 token 接口换取 access_token。
Q7:access_token 过期了怎么办?
access_token 有效期为2小时。过期后可以使用 refresh_token 调用 token 接口刷新获取新的 access_token,无需用户重新授权。refresh_token 有效期为30天。
Q8:refresh_token 也过期了怎么办?
如果 refresh_token 也过期了(超过30天未使用),则需要重新引导用户进行授权,获取新的授权码和令牌。
Q9:redirect_uri 校验规则是什么?
授权时传入的 redirect_uri 必须与应用配置的回调地址白名单中的某一项前缀匹配。例如白名单配置了 https://example.com/callback,则 https://example.com/callback?foo=bar 是允许的,但 https://example.com/other 或 https://other.com 是不允许的。多个回调地址用换行或逗号分隔。
Q10:为什么调用接口返回 invalid_client?
invalid_client 错误通常有以下原因:
- AppID 不存在或填写错误
- AppSecret 错误
- 应用状态不是「已通过」(待审核、已拒绝、已封禁的应用无法使用OAuth2服务)
请检查 AppID 和 AppSecret 是否正确,并确认应用已通过审核。
Q11:同一用户在不同应用中的 openid 相同吗?
不相同。为了保护用户隐私,同一用户在不同应用中的 openid 是不同的。openid 的格式为 uid_{用户ID}_{哈希},每个应用对应不同的哈希值。
Q12:如何获取用户的邮箱?
需要在授权时将 scope 参数设置为 basic+email,用户同意后,调用 userinfo 接口返回的结果中会包含 email 字段。注意:scope 为 basic 时不会返回邮箱。
安全与部署
Q13:AppSecret 可以放在前端吗?
绝对不可以。AppSecret 是应用的敏感凭证,必须保存在服务端。如果放在前端代码(如浏览器JS、APP安装包)中,可能被攻击者获取,导致应用被盗用。所有需要 AppSecret 的接口(如 token 接口)都必须在服务端调用。
Q14:state 参数有什么用?
state 参数用于防止 CSRF(跨站请求伪造)攻击。您在发起授权请求时生成一个随机字符串作为 state,并保存在 session 中。回调时验证返回的 state 是否与 session 中的一致,如果不一致则可能是攻击请求,应拒绝处理。强烈建议始终使用 state 参数。
Q15:支持 HTTPS 吗?
支持。生产环境强烈建议使用 HTTPS,防止授权码和令牌在传输过程中被窃取。平台会自动适配 HTTP/HTTPS,您只需在配置和回调地址中使用正确的协议即可。
Q16:用户被封禁后,已颁发的令牌还能用吗?
用户被封禁后,将无法进行新的授权(authorize 接口会返回 access_denied),但已颁发的 access_token 在过期前仍可使用(出于性能考虑未做实时校验)。建议在您的应用中结合本地用户状态做二次校验。管理员封禁应用后,该应用的所有OAuth2接口将立即不可用。
其他
Q17:平台支持哪些授权模式?
目前支持 OAuth2.0 授权码模式(Authorization Code Grant),包括授权码换取令牌和刷新令牌两种 grant_type。暂不支持隐式模式(Implicit)、密码模式(Password)和客户端凭证模式(Client Credentials)。
Q18:接口有调用频率限制吗?
目前没有严格的频率限制,但请合理使用,避免恶意高频调用。token 接口和 userinfo 接口建议在服务端做缓存,避免重复请求。
Q19:如何联系技术支持?
如有其他问题,请通过平台提供的联系方式与管理员取得联系。我们会尽快回复您的问题。