注册应用:
- 登录微博开放平台(https://open.weibo.com/)。
- 创建一个新应用,填写应用名称、描述等信息。
获取
keyid
:- 应用创建成功后,微博会分配一个
App Key
(即keyid
)和App Secret
。 App Key
是应用的唯一标识,用于 OAuth 授权和 API 调用。
- 应用创建成功后,微博会分配一个
配置回调地址:
- 进入应用管理页面,找到 高级信息 或 OAuth2.0 授权设置。
在 授权回调页 中填写你的回调地址,例如:
https://your-website.com/auth/weibo/callback
HTTPS:
- 微博要求回调地址必须使用 HTTPS(除非是本地测试环境)。
- 如果你的网站没有 HTTPS,可以使用工具(如 Let's Encrypt)免费获取 SSL 证书。
路径唯一性:
- 回调地址必须是唯一的,不能与其他路由冲突。
域名一致性:
- 回调地址的域名必须与微博开放平台中填写的 应用域名 一致。
ngrok:将本地地址映射为公网地址。
ngrok http 3000
生成的地址(如
https://abc123.ngrok.io
)可以作为回调地址。回调地址不匹配:
- 确保回调地址与微博开放平台中配置的完全一致(包括协议、域名和路径)。
授权失败:
- 检查是否正确处理了授权码,并确保
App Key
和App Secret
正确。
- 检查是否正确处理了授权码,并确保
HTTPS 问题:
- 如果无法使用 HTTPS,可以在本地测试环境中使用 HTTP,但正式环境必须使用 HTTPS。
微博开放平台的调用问题
在微博开放平台中,keyid
是用于标识应用的唯一 ID,而 回调地址(Callback URL) 是用户在微博授权后,微博服务器将用户重定向回你的应用的地址。以下是关于微博 keyid
和回调地址的详细说明及配置步骤:
1. 微博开放平台应用配置
2. 回调地址的要求
3. 处理微博 OAuth 回调的代码示例
以下是一个简单的 Node.js 示例,展示如何处理微博的 OAuth 回调:
安装依赖
npm install express axios
示例代码
const express = require('express');
const axios = require('axios');
const app = express();
// 微博 OAuth 应用的 App Key 和 App Secret
const APP_KEY = 'your-app-key';
const APP_SECRET = 'your-app-secret';
const REDIRECT_URI = 'https://your-website.com/auth/weibo/callback';
// 用户点击登录按钮后,重定向到微博授权页面
app.get('/auth/weibo', (req, res) => {
const authUrl = `https://api.weibo.com/oauth2/authorize?client_id=${APP_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code`;
res.redirect(authUrl);
});
// 微博回调地址,处理授权码
app.get('/auth/weibo/callback', async (req, res) => {
const { code } = req.query;
if (!code) {
return res.status(400).send('授权失败:未收到授权码');
}
try {
// 使用授权码获取访问令牌
const tokenResponse = await axios.post('https://api.weibo.com/oauth2/access_token', {
client_id: APP_KEY,
client_secret: APP_SECRET,
code: code,
grant_type: 'authorization_code',
redirect_uri: REDIRECT_URI,
});
const accessToken = tokenResponse.data.access_token;
// 使用访问令牌获取用户信息
const userResponse = await axios.get('https://api.weibo.com/2/users/show.json', {
params: { access_token: accessToken },
});
const userInfo = userResponse.data;
res.send(`欢迎,${userInfo.screen_name}!`);
} catch (error) {
console.error('OAuth 错误:', error);
res.status(500).send('授权失败:服务器错误');
}
});
// 启动服务器
app.listen(3000, () => {
console.log('服务器已启动:http://localhost:3000');
});
4. 本地测试回调地址
如果你在本地开发环境中测试,可以使用以下工具生成临时 HTTPS 地址:
5. 常见问题
关闭

复制链接
https://www.861800.xyz/index.php/archives/3/
Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /www/wwwroot/www.861800.xyz/usr/themes/farallon/comments.php on line 4