Files
robinhood-agentic-mcp/auth/login.go
T

28 lines
731 B
Go

package auth
import (
"context"
"fmt"
"os"
)
// Login authenticates to Robinhood Agentic MCP and writes tokens.
// Prefers ROBINHOOD_ACCESS_TOKEN when set; otherwise runs a browser OAuth dance.
// Returns the Agentic account number when it can be discovered.
func Login(ctx context.Context, cfg Config) (accountID string, err error) {
if err := ctx.Err(); err != nil {
return "", err
}
cfg = cfg.WithDefaults()
if cfg.TokenFile == "" {
return "", fmt.Errorf("login: missing TokenFile")
}
if tok := os.Getenv("ROBINHOOD_ACCESS_TOKEN"); tok != "" {
if err := WriteTokens(cfg.TokenFile, tok, os.Getenv("ROBINHOOD_REFRESH_TOKEN")); err != nil {
return "", err
}
return "", nil
}
return loginOAuth(ctx, cfg)
}