首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过AngularJS 6& Node认证优步API

通过AngularJS 6& Node认证优步API
EN

Stack Overflow用户
提问于 2018-10-16 13:26:52
回答 1查看 129关注 0票数 0

我正在开发一个应用程序,在这个应用程序中,我们使用UBER API。我使用节点作为后端,使用AngularJS 6作为前端。

工作流

在节点部分,我有访问认证和其他优步API。我已经通过JQuery进行了测试。它运转得很好。但是当我试图访问AngularJS 6时,我会收到以下错误。

代码语言:javascript
复制
SyntaxError: Unexpected token h in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttpRequest.onLoad (http://localhost:4200/vendor.js:11697:51) at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:2743:31) at Object.onInvokeTask (http://localhost:4200/vendor.js:41155:33) at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:2742:36) at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (http://localhost:4200/polyfills.js:2510:47) at ZoneTask.push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (http://localhost:4200/polyfills.js:2818:34) at invokeTask (http://localhost:4200/polyfills.js:3862:14) at XMLHttpRequest.globalZoneAwareCallback (http://localhost:4200/polyfills.js:3888:17)
text: "https://login.uber.com/oauth/v2/authorize?response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogin&scope=profile%20history%20places%20request&client_id=XXXXXXXXXXXXXXXXXXXXXXXXX"
__proto__: Object
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure during parsing for http://localhost:1455/api/login"
name: "HttpErrorResponse"
ok: false
status: 200
statusText: "OK"
url: "http://localhost:1455/api/login"
__proto__: HttpResponseBase

这是我的代码节点

代码语言:javascript
复制
app.get('/api/login', function(request, response) {
    response.header('Access-Control-Allow-Origin', '*');
    response.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    response.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');    
    response.setHeader('Access-Control-Allow-Credentials', true);
    var authURL=uber.getAuthorizeUrl(config.uber.scopes);
    response.redirect(authURL);
});

AngularJS 6

data.service.ts

代码语言:javascript
复制
 UberAuthenticate(){
    return this.http.get('http://localhost:1455/api/login');      
  }

login.components.ts

代码语言:javascript
复制
export class LoginComponent implements OnInit {
  constructor(private dataService: DataService) {
   }

  ngOnInit() {
    this.dataService.UberAuthenticate().subscribe((response)=>{
      console.log('response is ', response)
    },(error) => {
      console.log('error is ', error)
  })
  }
}

我在端口上运行的节点应用程序:1455、AngularJS 端口:4200和回调url http://localhost:1455/api/callback。我还在proxy.config.json中设置了一些配置

代码语言:javascript
复制
{
    "/api/*": {
      "target": "http://localhost:1455",
      "secure": false,
      "changeOrigin": false,
      "pathRewrite": {"^/api" : ""}
    }
  }

我没有关于节点和AngularJS 6的经验。我不知道我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-10-16 13:39:24

由于授权端点返回的是纯文本链接,因此需要将其指定为服务中的角,如下所示:

代码语言:javascript
复制
UberAuthenticate(){
    return this.http.get('http://localhost:1455/api/login', { responseType: 'text' });      
}

在NodeJS部分,您必须返回授权url,重定向必须在前端进行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52836558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档