# Script Instagram API da Shell

**URL:** <https://www.ruby-forum.com/t/script-instagram-api-da-shell/227041>\
**Category:** IT\
**Created:** [March 1, 2013, 5:20pm UTC](https://www.ruby-forum.com/t/script-instagram-api-da-shell/227041 "2013-03-01T17:20:32Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![albertobraschi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/87869e/32.png) [@albertobraschi](https://www.ruby-forum.com/u/albertobraschi)\
**Post date:** [March 1, 2013, 5:20pm UTC](https://www.ruby-forum.com/t/script-instagram-api-da-shell/227041/1 "2013-03-01T17:20:32Z")

</div>

Ciao ragazzi, sto provando a utilizzare le API di Instagram per fare uno  
script che funzioni solo da shell.  
Sto incontrando due problemi:

1. 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
2. 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](http://localhost:9393/oauth/callback)”

client = OAuth2::Client.new(@consumer\_key, @consumer\_secret, {  
:site =\> “[http://instagram.com/](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](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è:

1. Io su Instagram seguo 321 utenti, invece qui me ne da solo 224 tot.
2. 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)
