2017-03-01 7 views
0

Googleアドワーズ広告a​​pi golangパッケージを使用しようとしています。ただし、このパッケージには、すべての資格情報を含むファイルに対して認証するためのメソッド/関数しかありません。 私はGolangの新機能ですから、必要な情報を含む文字列変数を使用して認証するための新しい関数を作成する方法についてはわかりません。ファイルなしのGolang gadsパッケージ認証

パッケージはで見つけることができます:私はいくつかの私はそれを把握することができるかどうかを確認するために掘った https://github.com/emiddleton/gads

。私はその情報を含むファイルの構造の例を見つけました。ここに例があります:

{ 
    "oauth2.Config": { 
     "ClientID": "4585432543254323-f4qfewtg2qtg5esy24t45h.apps.googleusercontent.com", 
     "ClientSecret": "fa74ehgyjhtrrjtbrsu56hHjhhrtger", 
     "Endpoint": { 
      "AuthURL": "https://accounts.google.com/o/oauth2/auth", 
      "TokenURL": "https://accounts.google.com/o/oauth2/token" 
     }, 
     "RedirectURL": "oob", 
     "Scopes": [ 
      "https://adwords.google.com/api/adwords" 
     ] 
    }, 
    "oauth2.Token": { 
     "access_token": "jfdsalkfjdskalfjdaksfdasfdsahrtsrgf", 
     "token_type": "Bearer", 
     "refresh_token": "g65wurefej87ruy4fcyfdsafdsafdsafsdaf4fu", 
     "expiry": "2015-03-05T00:13:23.382907238+09:00" 
    }, 
    "gads.Auth": { 
     "CustomerId": "INSERT_YOUR_CLIENT_CUSTOMER_ID_HERE", 
     "DeveloperToken": "INSERT_YOUR_DEVELOPER_TOKEN_HERE", 
     "UserAgent": "tests (Golang 1.4 github.com/emiddleton/gads)" 
    } 
} 

これはJSONオブジェクトです。パッケージが情報を取り込むために次の関数を使用していることがわかります。

func NewCredentialsFromFile(pathToFile string, ctx context.Context) (ac AuthConfig, err error) { 
    data, err := ioutil.ReadFile(pathToFile) 
    if err != nil { 
     return ac, err 
    } 
    if err := json.Unmarshal(data, &ac); err != nil { 
     return ac, err 
    } 
    ac.file = pathToFile 
    ac.tokenSource = ac.OAuth2Config.TokenSource(ctx, ac.OAuth2Token) 
    ac.Auth.Client = ac.OAuth2Config.Client(ctx, ac.OAuth2Token) 
    return ac, err 

ここで、pathToFileはすでに定義されています。パスは、ユーザーのホームディレクトリに配置されるjsonファイルになります。

資格情報にファイルを使用することに依存しない別の機能を追加するにはどうすればよいでしょうか?

答えて

1

ようなあなたのコード内でAuthConfigを作り、あなたはJSONなどの文字列で資格情報を持っていると仮定すると:

func NewCredentialsFromStr(config string, ctx context.Context) (ac gads.AuthConfig, err error) { 
    if err := json.Unmarshal(config, &ac); err != nil { 
     return ac, err 
    } 
    ac.file = pathToFile 
    ac.tokenSource = ac.OAuth2Config.TokenSource(ctx, ac.OAuth2Token) 
    ac.Auth.Client = ac.OAuth2Config.Client(ctx, ac.OAuth2Token) 
    return ac, err 
} 
関連する問題