Skip to content

Commit 7b66c53

Browse files
authored
Merge pull request #39 from twitchdev/bugfix/fix-osx-scope-issue
fixing login going forward
2 parents 55791b6 + 26f6908 commit 7b66c53

File tree

2 files changed

+50
-14
lines changed

2 files changed

+50
-14
lines changed

internal/api/api.go

-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,6 @@ func GetClientInformation() (clientInformation, error) {
138138
if err != nil {
139139
return clientInformation{}, err
140140
}
141-
fmt.Printf("%v", r)
142141
token = r.Response.AccessToken
143142
}
144143

internal/login/login.go

+50-13
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"fmt"
1212
"log"
1313
"net/http"
14+
"net/url"
1415
"os/exec"
1516
"runtime"
1617
"time"
@@ -64,9 +65,16 @@ const RefreshTokenURL = "https://id.twitch.tv/oauth2/token?grant_type=refresh_to
6465
const RevokeTokenURL = "https://id.twitch.tv/oauth2/revoke"
6566

6667
func ClientCredentialsLogin(p LoginParameters) (LoginResponse, error) {
67-
twitchClientCredentialsURL := fmt.Sprintf(`%s&client_id=%s&client_secret=%s`, p.URL, p.ClientID, p.ClientSecret)
68+
u, err := url.Parse(p.URL)
69+
if err != nil {
70+
log.Fatal(err)
71+
}
72+
q := u.Query()
73+
q.Set("client_id", p.ClientID)
74+
q.Set("client_secret", p.ClientSecret)
75+
u.RawQuery = q.Encode()
6876

69-
resp, err := loginRequest(http.MethodPost, twitchClientCredentialsURL, nil)
77+
resp, err := loginRequest(http.MethodPost, u.String(), nil)
7078
if err != nil {
7179
log.Fatal(err.Error())
7280
}
@@ -87,21 +95,27 @@ func ClientCredentialsLogin(p LoginParameters) (LoginResponse, error) {
8795
}
8896

8997
func UserCredentialsLogin(p LoginParameters) (LoginResponse, error) {
90-
twitchAuthorizeURL := fmt.Sprintf(`%s&client_id=%s&redirect_uri=%s&force_verify=true`, p.AuthorizeURL, p.ClientID, p.RedirectURL)
91-
98+
u, err := url.Parse(p.AuthorizeURL)
99+
if err != nil {
100+
log.Fatal(err)
101+
}
102+
q := u.Query()
103+
q.Set("client_id", p.ClientID)
104+
q.Set("redirect_uri", p.RedirectURL)
92105
if p.Scopes != "" {
93-
twitchAuthorizeURL += "&scope=" + p.Scopes
106+
q.Set("scope", p.Scopes)
94107
}
95108

96109
state, err := generateState()
97110
if err != nil {
98111
log.Fatal(err.Error())
99112
}
100113

101-
twitchAuthorizeURL += "&state=" + state
114+
q.Set("state", state)
115+
u.RawQuery = q.Encode()
102116

103117
fmt.Println("Opening browser. Press Ctrl+C to cancel...")
104-
openBrowser(twitchAuthorizeURL)
118+
openBrowser(u.String())
105119

106120
ur, err := userAuthServer()
107121
if err != nil {
@@ -112,8 +126,15 @@ func UserCredentialsLogin(p LoginParameters) (LoginResponse, error) {
112126
log.Fatal("state mismatch")
113127
}
114128

115-
twitchUserTokenURL := fmt.Sprintf(`%s&client_id=%s&client_secret=%s&redirect_uri=%s&code=%s`, p.URL, p.ClientID, p.ClientSecret, p.RedirectURL, ur.Code)
116-
resp, err := loginRequest(http.MethodPost, twitchUserTokenURL, nil)
129+
u2, err := url.Parse(p.URL)
130+
q = u2.Query()
131+
q.Set("client_id", p.ClientID)
132+
q.Set("client_secret", p.ClientSecret)
133+
q.Set("redirect_uri", p.RedirectURL)
134+
q.Set("code", ur.Code)
135+
u2.RawQuery = q.Encode()
136+
137+
resp, err := loginRequest(http.MethodPost, u2.String(), nil)
117138
if err != nil {
118139
log.Fatalf("Error reading body: %v", err)
119140
}
@@ -129,9 +150,16 @@ func UserCredentialsLogin(p LoginParameters) (LoginResponse, error) {
129150
}
130151

131152
func CredentialsLogout(p LoginParameters) (LoginResponse, error) {
132-
twitchClientCredentialsURL := fmt.Sprintf(`%s?client_id=%s&token=%s`, p.URL, p.ClientID, p.Token)
153+
u, err := url.Parse(p.URL)
154+
if err != nil {
155+
log.Fatal(err)
156+
}
157+
q := u.Query()
158+
q.Set("client_id", p.ClientID)
159+
q.Set("token", p.Token)
160+
u.RawQuery = q.Encode()
133161

134-
resp, err := loginRequest(http.MethodPost, twitchClientCredentialsURL, nil)
162+
resp, err := loginRequest(http.MethodPost, u.String(), nil)
135163
if err != nil {
136164
log.Printf(err.Error())
137165
return LoginResponse{}, err
@@ -147,8 +175,17 @@ func CredentialsLogout(p LoginParameters) (LoginResponse, error) {
147175
}
148176

149177
func RefreshUserToken(p RefreshParameters) (LoginResponse, error) {
150-
twitchRefreshTokenURL := fmt.Sprintf(`%s&client_id=%s&client_secret=%s&redirect_uri=&refresh_token=%s`, p.URL, p.ClientID, p.ClientSecret, p.RefreshToken)
151-
resp, err := loginRequest(http.MethodPost, twitchRefreshTokenURL, nil)
178+
u, err := url.Parse(p.URL)
179+
if err != nil {
180+
log.Fatal(err)
181+
}
182+
q := u.Query()
183+
q.Set("client_id", p.ClientID)
184+
q.Set("client_secret", p.ClientSecret)
185+
q.Set("refresh_token", p.RefreshToken)
186+
u.RawQuery = q.Encode()
187+
188+
resp, err := loginRequest(http.MethodPost, u.String(), nil)
152189
if err != nil {
153190
return LoginResponse{}, err
154191
}

0 commit comments

Comments
 (0)