diff --git a/README.md b/README.md index 0dacc97..68c206a 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ scraper.IsLoggedIn() If you don't want to use your account, you can try login as a Twitter app: ```golang -err := scraper.LoginOpenAccount() +account, err := scraper.LoginOpenAccount() ``` ### Get user tweets @@ -98,7 +98,7 @@ import ( func main() { scraper := twitterscraper.New() - err := scraper.LoginOpenAccount() + account, err := scraper.LoginOpenAccount() if err != nil { panic(err) } diff --git a/auth.go b/auth.go index 4f97ee9..0e26901 100644 --- a/auth.go +++ b/auth.go @@ -26,6 +26,11 @@ const ( ) type ( + OpenAccount struct { + OAuthToken string `json:"oauth_token"` + OAuthTokenSecret string `json:"oauth_token_secret"` + } + flow struct { Errors []struct { Code int `json:"code"` @@ -34,11 +39,8 @@ type ( FlowToken string `json:"flow_token"` Status string `json:"status"` Subtasks []struct { - SubtaskID string `json:"subtask_id"` - OpenAccount struct { - OAuthToken string `json:"oauth_token"` - OAuthTokenSecret string `json:"oauth_token_secret"` - } `json:"open_account"` + SubtaskID string `json:"subtask_id"` + OpenAccount OpenAccount `json:"open_account"` } `json:"subtasks"` } @@ -296,16 +298,16 @@ func (s *Scraper) Login(credentials ...string) error { } // LoginOpenAccount as Twitter app -func (s *Scraper) LoginOpenAccount() error { +func (s *Scraper) LoginOpenAccount() (OpenAccount, error) { accessToken, err := s.getAccessToken(appConsumerKey, appConsumerSecret) if err != nil { - return err + return OpenAccount{}, err } s.setBearerToken(accessToken) err = s.GetGuestToken() if err != nil { - return err + return OpenAccount{}, err } // flow start @@ -320,7 +322,7 @@ func (s *Scraper) LoginOpenAccount() error { } flowToken, err := s.getFlowToken(data) if err != nil { - return err + return OpenAccount{}, err } // flow next link @@ -334,7 +336,7 @@ func (s *Scraper) LoginOpenAccount() error { } info, err := s.getFlow(data) if err != nil { - return err + return OpenAccount{}, err } if info.Subtasks != nil && len(info.Subtasks) > 0 { @@ -342,14 +344,17 @@ func (s *Scraper) LoginOpenAccount() error { s.oAuthToken = info.Subtasks[0].OpenAccount.OAuthToken s.oAuthSecret = info.Subtasks[0].OpenAccount.OAuthTokenSecret if s.oAuthToken == "" || s.oAuthSecret == "" { - return fmt.Errorf("auth error: %v", "Token or Secret is empty") + return OpenAccount{}, fmt.Errorf("auth error: %v", "Token or Secret is empty") } s.isLogged = true s.isOpenAccount = true - return nil + return OpenAccount{ + OAuthToken: info.Subtasks[0].OpenAccount.OAuthToken, + OAuthTokenSecret: info.Subtasks[0].OpenAccount.OAuthTokenSecret, + }, nil } } - return fmt.Errorf("auth error: %v", "OpenAccount") + return OpenAccount{}, fmt.Errorf("auth error: %v", "OpenAccount") } // Logout is reset session diff --git a/auth_test.go b/auth_test.go index 88bfd68..4a15392 100644 --- a/auth_test.go +++ b/auth_test.go @@ -52,7 +52,9 @@ func TestAuth(t *testing.T) { func TestLoginOpenAccount(t *testing.T) { scraper := twitterscraper.New() - if err := scraper.LoginOpenAccount(); err != nil { + _, err := scraper.LoginOpenAccount() + + if err != nil { t.Fatalf("LoginOpenAccount() error = %v", err) } } diff --git a/profile_test.go b/profile_test.go index bdde60d..585367c 100644 --- a/profile_test.go +++ b/profile_test.go @@ -31,7 +31,7 @@ func TestGetProfile(t *testing.T) { } scraper := twitterscraper.New() - err := scraper.LoginOpenAccount() + _, err := scraper.LoginOpenAccount() if err != nil { t.Fatalf("LoginOpenAccount() error = %v", err) } @@ -87,7 +87,7 @@ func TestGetProfilePrivate(t *testing.T) { } scraper := twitterscraper.New() - err := scraper.LoginOpenAccount() + _, err := scraper.LoginOpenAccount() if err != nil { t.Fatalf("LoginOpenAccount() error = %v", err) } @@ -122,7 +122,7 @@ func TestGetProfilePrivate(t *testing.T) { func TestGetProfileErrorSuspended(t *testing.T) { scraper := twitterscraper.New() - err := scraper.LoginOpenAccount() + _, err := scraper.LoginOpenAccount() if err != nil { t.Fatalf("LoginOpenAccount() error = %v", err) } @@ -140,7 +140,7 @@ func TestGetProfileErrorNotFound(t *testing.T) { neUser := "sample3123131" expectedError := fmt.Sprintf("User '%s' not found", neUser) scraper := twitterscraper.New() - err := scraper.LoginOpenAccount() + _, err := scraper.LoginOpenAccount() if err != nil { t.Fatalf("LoginOpenAccount() error = %v", err) } @@ -156,7 +156,7 @@ func TestGetProfileErrorNotFound(t *testing.T) { func TestGetUserIDByScreenName(t *testing.T) { scraper := twitterscraper.New() - err := scraper.LoginOpenAccount() + _, err := scraper.LoginOpenAccount() if err != nil { t.Fatalf("LoginOpenAccount() error = %v", err) } diff --git a/tweets_test.go b/tweets_test.go index 71960c1..202ffc5 100644 --- a/tweets_test.go +++ b/tweets_test.go @@ -21,7 +21,7 @@ func TestGetTweets(t *testing.T) { maxTweetsNbr := 300 dupcheck := make(map[string]bool) scraper := twitterscraper.New() - err := scraper.LoginOpenAccount() + _, err := scraper.LoginOpenAccount() if err != nil { t.Fatalf("LoginOpenAccount() error = %v", err) }