https://api.imgur.com/3/image的Http失败响应

问题描述 投票:0回答:2

我正在尝试将基本的64位编码图像上传到imgur并且它一直失败并显示错误消息Http failure response for https://api.imgur.com/3/image: 403 OK。我该如何解决?

@Injectable()
export class ImgurService {
  private readonly IMGUR_UPLOAD_URL = 'https://api.imgur.com/3/image';
  private readonly IMGUR_API_KEY = '<api-key-xxxx>';

  constructor(
    private logger: NGXLogger,
    private http: HttpClient
  ) {
  }

  upload(b64Image: any) {
    this.logger.debug('Handling file input');
    this.logger.debug(image);
    this.logger.debug(`Uploading picture to ${this.IMGUR_UPLOAD_URL}`);
    const httpOptions = {
      headers: new HttpHeaders ({
        'Authorization': `Bearer ${this.IMGUR_API_KEY}`,
      }),
    };
    const formData = new FormData();
    formData.append('image', b64Image);
    formData.append('album', 'profile');
    return this.http.post<ImgurResponse>(`${this.IMGUR_UPLOAD_URL}`, formData, httpOptions);
  }
}

响应:

error:
data: {error: "The access token provided is invalid.", request: "/3/image", method: "POST"}
status: 403
success: false
__proto__: Object
headers: HttpHeaders
lazyInit: ƒ ()
lazyUpdate: null
normalizedNames: Map(0) {}
__proto__: Object
message: "Http failure response for https://api.imgur.com/3/image: 403 OK"
name: "HttpErrorResponse"
ok: false
status: 403
statusText: "OK"
url: "https://api.imgur.com/3/image"
__proto__: HttpResponseBase
angular imgur
2个回答
1
投票

您没有正确设置标题:您需要使用set或append作为对象是不可变的。

let headers = new HttpHeaders();
headers = headers.set('Authorization', 'Bearer ${this.IMGUR_API_KEY}');

最有可能的是,您可以在浏览器中看到未发送您的身份验证标头。


1
投票

很可能你传递了一个错误的访问令牌。 这是一个对我来说很好的代码:

  uploadImage(b64Image: string): Observable<Object> {
    let headers = new HttpHeaders({ 'Authorization': `Bearer ${this.IMGUR_ACCESS_TOKEN}` });

    return this.httpClient.post(this.IMGUR_UPLOAD_URL, b64Image, { headers: headers });
  }

当我提供一个随机的不存在的访问令牌时,我得到403就像这样: enter image description here

请参阅快速示例here

© www.soinside.com 2019 - 2024. All rights reserved.