feat: return open account
This commit is contained in:
parent
87180a4cfc
commit
c8ad9a0410
5 changed files with 29 additions and 22 deletions
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
29
auth.go
29
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"`
|
||||
|
|
@ -35,10 +40,7 @@ type (
|
|||
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"`
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue