func authTwitter(session *api.Session, keyRing *openpgp.KeyRing) { username, err := readPrompt("Twitter username: "******"Couldn't read from console: %v\n", err) } authData, err := session.TwitterGetAuth(username) if err != nil { fmt.Printf("Couldn't get authentication data: %v\n", err) } pub := session.User.PublicKeys["primary"] if pub == nil { fmt.Println("No public key for this account.") os.Exit(1) } fmt.Printf("Fingerprint: %s\n", pub.Fingerprint) signer := keyRing.Entity(pub.Fingerprint) if signer == nil { fmt.Println("No private key for this account.") os.Exit(1) } ioutil.WriteFile("/tmp/authdata.json", authData, 0644) sig, err := keyRing.Sign(authData, pub.Fingerprint) if err != nil { fmt.Printf("Couldn't sign authentication data: %v\n", err) os.Exit(1) } proof, err := session.ServicePostAuth(sig, username, "twitter") if err != nil { fmt.Printf("Couldn't authenticate via Twitter: %v\n", err) os.Exit(1) } fmt.Printf("Proof text: '%s'\n", proof.Text) }