Ciao ragazzi, sto provando a utilizzare le API di Instagram per fare uno
script che funzioni solo da shell.
Sto incontrando due problemi:
- Non riesco/non so come fare una chiamata ad un url leggere un URL di
risposta da dove mi ricavo il “code” e per poi ottenere il token - Non riesco a capire dove sbaglio per ottenere la lista degli userd id
di chi seguo (follow) su instagram.
Di seguito vi copio il codice:
instagram_from_shell.rb ------------------------------------------
require ‘oauth2’
require “instagram”
puts “Write your CONSUMER KEY:”
@consumer_key = gets.strip
puts “Write your CONSUMER SECRET:”
@consumer_secret = #gets.strip
CALLBACK_URL = “http://localhost:9393/oauth/callback”
client = OAuth2::Client.new(@consumer_key, @consumer_secret, {
:site => “http://instagram.com/”,
:request_token_path => “/oauth/request_token”,
:access_token_path => “/oauth/access_token”,
:authorize_path => “/oauth/authenticate?response_type=code”,})
???
Come e dove inserisco le credenziali (username e psw) per accedere al
servizio e autorizzare l’app?
???
autorizzare l’app
uri = client.auth_code.authorize_url(:redirect_uri => CALLBACK_URL)
???
Come faccio a leggere l’url di risposta con il “code”?
???
estrapolo il “code” dall’ url
uri =
URI(“http://localhost:9393/oauth/callback?code=xxxxxxxxxxxxxxxxxxxxxxxxxxx”)
code = uri.query.split(“=”).last
???
con il “code” devo chiedere il token e qui NON ho trovato il modo per
avercelo
@access_token = client.auth_code.get_token(code, :redirect_uri =>
CALLBACK_URL )) #non corretto
???
Instagram.configure do |config|
config.client_id = @consumer_key
config.client_secret = @consumer_secret
config.access_token = @access_token
end
Funzione/metodo
def get_followers_id
following_ids = []
next_cursor = 0
while next_cursor
page = Instagram.user_follows(:cursor => next_cursor).each do |user|
following_ids << user.id
end
puts “valore next_cursor = #{page.pagination.next_cursor} , n° id
presenti = #{page.count} e #{following_ids.count} id salvati”
next_cursor = page.pagination.next_cursor
end
puts(“saved #{following_ids.count} users id”)
end
--------------------------------------------------------------
Se faccio partire la funzione/metodo la console mi da questo risultato
valore next_cursor = 1356908804645 , n id presenti = 50 e 50 id salvati
valore next_cursor = 1353145392700 , n id presenti = 50 e 100 id salvati
valore next_cursor = 1347420191755 , n id presenti = 49 e 149 id salvati
valore next_cursor = 1330765947348 , n id presenti = 29 e 178 id salvati
valore next_cursor = 1311898349798 , n id presenti = 4 e 182 id salvati
valore next_cursor = 1299688462476 , n id presenti = 25 e 207 id salvati
valore next_cursor = , n id presenti = 17 e 224 id salvati
Non riesco a capire perchè:
- Io su Instagram seguo 321 utenti, invece qui me ne da solo 224 tot.
- perchè a volte le pagine sono composte da 50 risultati mentre alcune
ne hanno di meno (addirittura 4)
Avete mai usato le API di Instagram? Anche a voi avete notato questa
cosa?
Grazie in anticipo
Alberto (@albybisy)