API активности учетной записи Twitter - как подписать веб-перехватчики на события? - PullRequest
0 голосов
/ 12 июля 2020

Я разрабатываю бота для Twitter, используя golang. Я следовал инструкциям, написанным здесь

Чтобы мой веб-перехватчик слушал (подписывался) на активность учетной записи Twitter (бота), я должен подписать свой веб-перехватчик на события . Руководство находится в здесь

Вот где я застрял. Мне удалось зарегистрировать свой веб-перехватчик, но я все еще не могу подписать его на события.

Вот код, который я запускаю:

func main() {
    //Load env
    err := godotenv.Load()
    if err != nil {
        log.Fatal("Error loading .env file")
        log.Println("Error loading .env file")
    }


    subscribeWebhook()
}

func CreateClient() *http.Client {
    //Create oauth client with consumer keys and access token
    config := oauth1.NewConfig(os.Getenv("CONSUMER_KEY"), os.Getenv("CONSUMER_SECRET"))
    token := oauth1.NewToken(os.Getenv("ACCESS_TOKEN_KEY"), os.Getenv("ACCESS_TOKEN_SECRET"))

    return config.Client(oauth1.NoContext, token)
}

func subscribeWebhook() {
    log.Println("Subscribing webapp...")
    client := CreateClient()
    path := "https://api.twitter.com/1.1/account_activity/all/" + os.Getenv("WEBHOOK_ENV") + "/subscriptions.json"
    resp, err := client.PostForm(path, nil)
    if err != nil {
        panic(err)
    }
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    //If response code is 204 it was successful
    if resp.StatusCode == 204 {
        log.Println("Subscribed successfully")
    } else if resp.StatusCode != 204 {
        log.Println("Could not subscribe the webhook. Response below:")
        log.Println(string(body))
    }
}

И вот ответ, который я получаю:

{
    "errors": [
        {
            "code": 348,
            "message": "Client application is not permitted to access this user's webhook subscriptions."
        }
    ]
}

Пожалуйста, помогите мне разобраться. Спасибо, ребята.

1 Ответ

1 голос
/ 13 июля 2020

Я понял.

Оказывается, в настройках приложения на портале разработчика вы должны дать своему приложению полное разрешение (чтение, запись и личные сообщения). Затем заново сгенерируйте свои ключи и жетоны. Наконец, обновите переменные env новыми ключами и токенами.

...