Angular 2 - Twitter 搜索 api - 预检时仅应用程序的身份验证错误 400

Posted

技术标签:

【中文标题】Angular 2 - Twitter 搜索 api - 预检时仅应用程序的身份验证错误 400【英文标题】:Angular 2 - Twitter search api - Application-only authentication error 400 on preflight 【发布时间】:2017-03-01 07:51:12 【问题描述】:

我尝试使用仅限应用程序的身份验证调用 twitter 搜索 API

但我无法按照文档获取不记名令牌:https://dev.twitter.com/oauth/application-only

let urlAuth = 'https://api.twitter.com/oauth2/token';
let apiKey = encodeURIComponent('xxx');
let apiKeySecret = encodeURIComponent('xxx');
let encoded = btoa(apiKey + ':' + apiKeySecret);
let body = 'grant_type=client_credentials';
let options = 
   headers: new Headers(
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
    'Authorization': 'Basic ' + encoded
   )
;

this.http.post(urlAuth, body, options)
  .subscribe(data => 
    console.log('twitter auth', data);
  );

这是网络日志:

Request URL:https://api.twitter.com/oauth2/token
Request Method:OPTIONS
Status Code:400 
Remote Address:104.244.42.194:443

可以从本地主机吗?来自客户端?

【问题讨论】:

【参考方案1】:

这是因为 CORS 预检请求 (https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Preflighted_requests)

现在 Twitter API 似乎不支持 CORS。唯一的方法是从后端服务器发出请求。

【讨论】:

以上是关于Angular 2 - Twitter 搜索 api - 预检时仅应用程序的身份验证错误 400的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Backand 和 Angular 2 连接到 Facebook/Twitter/Google?

Angular-ui select2 在将 Angular 与 twitter-bootstrap 混合时不起作用

typescript Angular 2应用程序角色访问装饰器,包装内置CanAccess功能。当用户角色不是ap时,防止视图转换

如何在 webapp 或 yo angular 上更新和包含 Twitter Bootstrap 3?

如何解决 Twitter 搜索 API 2.0 上的操作员错误

css Boostrap 3媒体查询 - https://scotch.io/quick-tips/default-sizes-for-twitter-bootstraps-media-querie