我已在 ImgUr 上创建了一个应用程序并收到了 ClientID 和 ClientSecret。
我知道我的专辑ID,例如:xbvhXo(不是真实的ID)
我想上传图片到我的相册。
我做了什么:
我为我的 TypeScript Next.js 项目安装了 imgur npm 包。
这是上传图片到ImgUr的代码:
const albumID = 'xbvhXo';
const client = new ImgurClient({
clientId: process.env.IMGUR_CLIENT_ID,
clientSecret: process.env.IMGUR_CLIENT_SECRET,
});
export async function uploadToImgUr(imgData: APImageData | Buffer[]): Promise<string[]> {
let files: Buffer[];
let album: string | undefined = albumID;
let name: string | undefined;
let title: string | undefined;
let description: string | undefined;
if(Array.isArray(imgData)) {
files = imgData;
} else {
files = imgData.files;
album = imgData.album ? imgData.album : albumID;
name = imgData.name;
title = imgData.title;
description = imgData.description;
}
const uploadPromises = files.map(async (file) => {
const response = await client.upload({
image: file,
type: 'stream',
album: album,
name: name,
title: title,
description: description,
});
return response.data.link;
});
return Promise.all(uploadPromises);
}
尝试将图像添加到我的相册时,出现错误:
You are not the owner of album 'xbvhXo', which means you can't add images to it. For anonymous albums, use the album deletehash.
这不是真的,因为我显然是这张专辑的所有者。
我该如何解决这个问题?
发现我需要
使用客户端 ID 和客户端密钥调用 ImgUr
authorize
端点
获取刷新令牌和访问令牌。 (这是一项手动工作,我访问此[url](https://api.imgur.com/oauth2/authorize?client_id=response_type=token&state=,然后手动单击“允许”。
然后,它将我重定向到我在 ImgUr 设置 -> 应用程序中创建应用程序期间设置的回调 URL。
获得这2个令牌后,我添加了以下代码:
const 客户端 = new ImgurClient({ clientId:process.env.IMGUR_CLIENT_ID, clientSecret:process.env.IMGUR_CLIENT_SECRET, accessToken:process.env.IMGUR_ACCESS_TOKEN, 刷新令牌:process.env.IMGUR_REFRESH_TOKEN, });
然后其余代码保持不变并开始工作。