2017-11-07 25 views
0

私はAngularアプリケーションでOAuth Implicitフロー認証方式を使用しています。私はそのようなURLからのパラメータ(私は手動の文字列分割を使用してに基づいていたすべてのメカニズムを取得するための任意のメカニズムを見つけることができませんでしたいくつかの調査の後AngularアプリケーションのURLフラグメントからパラメータを取得する方法は?

http://localhost/authentication#access_token={0}&expires_in={1}&user_id={2}

:私は次の文字列からパラメータを解析する必要がアクセストークンを取得するには。それは角度がURLフラグメントからパラメータを解析するために、「箱の外」のメカニズムを持っていないと、これを行うための最善の方法は、substring()またはsplit()メソッドを使用していることを意味してい

+0

コンストラクタ( プライベートルート:ActivatedRoute、 プライベートルータ:ルータ){ this.route .queryParams .subscribe(paramsは=> { にconsole.log(paramsは); })。 } ルートコンポーネントでこれを試すことができます –

答えて

1

あなたはActivatedRouteを使用してそれを行うことができます?

constructor(private route: ActivatedRoute) {} 

    ngOnInit() { 
    console.log(this.route.snapshot.fragment); // only update on component creation 
    this.route.fragment.subscribe(
     (fragments) => console.log(fragments) 
    ); // update on all changes 
    } 

クエリパラメータを取得するには、このコードのfragmentqueryParamsに置き換えます。

+0

私の誤っていない場合は、私のURLのパラメータがフラグメントにあるため、あなたのコードは私のためには機能しません。 [このコメント](https://stackoverflow.com/questions/47154085/how-to-retrieve-parameters-from-url-fragment-in-angular-application#comment81259864_47154868) – user183101

+0

フラグメントとqueryParamsで動作します。しかし、あなたのURLが間違っているように見えますが、最初のパラメータがなくparamsがあるので、おそらく角がqueryParamsをこのように取得できません。 – Boulboulouboule

+0

URLはOAuthの仕様に従って正しいです。 Angularはフラグメント内のパラメータを解析できないようです。 – user183101

0
import {Router, ActivatedRoute, Params} from '@angular/router'; 
import {OnInit, Component} from '@angular/core'; 

@Component({...}) 
export class MyComponent implements OnInit { 

    constructor(private activatedRoute: ActivatedRoute) {} 

    ngOnInit() { 
    // subscribe to router event 
    this.activatedRoute.params.subscribe((params: Params) => { 
     let userId = params['user_id']; 
     console.log(userId); 
     }); 
    } 

} 

クエリパラメータを取得したい場合は、this.activatedRoute.queryParamsthis.activatedRoute.paramsを交換してください。

+0

上記のURLを参照してください。私が理解しているように、あなたの解決策は、フラグメントなしの場合(URLに記号 '#'が付いていない場合)に機能します。私の場合は、あなたのコードでコンソールで「未定義」になります。 – user183101

+0

次に、純粋なjavascriptメソッドを使用して、そのようなURLを解析する必要があると思います。 Angularでは、そのような方法はありません。この回答はhttps://stackoverflow.com/a/40058721/4865392でもご覧いただけます。 – monica

関連する問題