blob: 26e7f565513effab4414b665bad4e74a3d4f6082 [file] [log] [blame]
package oauth2device
import (
"fmt"
"log"
"net/http"
"github.com/rjw57/oauth2device"
"github.com/rjw57/oauth2device/googledevice"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
"google.golang.org/api/youtube/v3"
)
// An simple example of using this package for device authorization.
func ExampleDeviceAuthorizationFlow() {
// The usual OAuth2 configuration
var clientOAuthConfig = &oauth2.Config{
ClientID: "<insert client id here>",
ClientSecret: "<insert client secret here>",
Endpoint: google.Endpoint,
// for example...
Scopes: []string{youtube.YoutubeReadonlyScope},
}
// Augment OAuth2 configuration with device endpoints.
var clientDeviceOAuthConfig = &oauth2device.Config{
Config: clientOAuthConfig,
DeviceEndpoint: googledevice.DeviceEndpoint,
}
// Use default HTTP client.
client := http.DefaultClient
// Get URL and code for user.
dcr, err := oauth2device.RequestDeviceCode(client, clientDeviceOAuthConfig)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Visit: %v and enter: %v\n", dcr.VerificationURL, dcr.UserCode)
// Wait for a token. It will be a standard oauth2.Token.
accessToken, err := oauth2device.WaitForDeviceAuthorization(client,
clientDeviceOAuthConfig, dcr)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Access token: %v\n", accessToken)
// Now use the token as usual...
}