Search code examples
goibm-cloudcloud-foundry

How to log into IBM Bluemix using REST API?


I am trying to use the Cloud Foundry go-cfclient to work with IBM Bluemix and the REST API in Go. I already fail with the login process. I am using the following sample code and invoke the program by passing in the Bluemix endpoint "https://api.ng.bluemix.net" and my userid/password info.

package main

import (
    "flag"
    "fmt"
    "os"

    cfclient "github.com/cloudfoundry-community/go-cfclient"
)

func main() {
    api := flag.String("api", "", "API endpoint")
    username := flag.String("username", "", "User name")
    password := flag.String("password", "", "password")
    help := flag.Bool("help", false, "help")

    flag.Parse()

    if *help || len(*api) == 0 || len(*username) == 0 || len(*password) == 0 {
        flag.Usage()
        os.Exit(1)
    }

    config := &cfclient.Config{
        ApiAddress: *api,
        Username:   *username,
        Password:   *password}

    fmt.Println("user %v\n",*username)
    var (
        client *cfclient.Client
        err    error
    )

    if client, err = cfclient.NewClient(config); err != nil {
        panic(err)
    }
    fmt.Println(client)

    apps, err := client.ListApps()

    if err != nil {
        panic(err)
    }

    fmt.Println(apps)
}

The error returned is:

panic: Error getting token: oauth2: cannot fetch token: 401 Unauthorized Response: {"error":"unauthorized","error_description":"Bad credentials"}

What information needs to be provided? How can I log into Bluemix using the REST API?


Solution

  • Here is an example of logging into Bluemix using the REST API (in JavaScript).

    You make a call to the login endpoint and request a token with your username and password from Bluemix.

    body of request

    headers of request