在Dashing.io仪表板上自定义Instagram小部件

时间:2015-09-29 19:15:17

标签: ruby json instagram-api dashing

我使用了许多(大多数)现有小部件的设置来设置仪表板。到目前为止,这是有效的 - see production dashboard here (正在进行中)

现在我希望有一个Instagram小部件,显示n拍摄的username最新图像。 我找到了一个小部件,它将显示longlat的图像,并且能够配置我的令牌,所以我可以与Instagram API交谈。

这是我当前小部件originally from @mjamieson's gist on github的代码。

require 'instagram'
require 'rest-client'
require 'json'

# Instagram Client ID from http://instagram.com/developer
Instagram.configure do |config|
  config.client_id = ENV['INSTAGRAM_CLIENT_ID']
  config.client_secret = ENV['INSTAGRAM_CLIENT_SECRET']
end

# Latitude, Longitude for location
instadash_location_lat = '45.429522'
instadash_location_long = '-75.689613'


SCHEDULER.every '10m', :first_in => 0 do |job|
  photos = Instagram.media_search(instadash_location_lat,instadash_location_long)
  if photos
    photos.map do |photo|
      { photo: "#{photo.images.low_resolution.url}" }
    end
  end
  send_event('instadash', photos: photos)
end

我让这个工作,但是想修改给定的API调用,只显示我/我选择的用户拍摄的图像。不幸的是,我不太了解ruby或json足以弄清楚Instagram API文档要我做什么。

我找到了以下网址

https://api.instagram.com/v1/users/{user-id}/media/recent/?access_token={acces-token}

并尝试了(填写了我的凭据)。它正确地返回了json数据,包括我的图像(以及其他数据)。

如何修改给定代码以按用户名而不是位置显示图像?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您需要SELECT [Property],[Value] From [Table1] Where [Date] Between [Forms]![Calendar Test]![Start Date] and [Forms]![Calendar Test]![End Date] 才能获得某些用户的内容。在gem页面上查看sample application。 看来你需要这样的东西:

SELECT [Property],[Value]
From [Table 2]
Where [Month] Between [Forms]![Calendar Test]![Start Date] and [Forms]![Calendar Test]![End Date]

此示例如何使用OAuth2浏览器授权和sinatra应用程序获取此access_token:

access_token

答案 1 :(得分:0)

解决方案

require 'sinatra'
require 'instagram'

# Instagram Client ID from http://instagram.com/developer
Instagram.configure do |config|
  config.client_id = ENV['INSTAGRAM_CLIENT_ID']
  config.client_secret = ENV['INSTAGRAM_CLIENT_SECRET']
  config.access_token = ENV['INSTAGRAM_ACCESS_TOKEN']
end

user_id = ENV['INSTAGRAM_USER_ID']

SCHEDULER.every '2m', :first_in => 0 do |job|
  photos = Instagram.user_recent_media("#{user_id}")
  if photos
    photos.map! do |photo|
      { photo: "#{photo.images.low_resolution.url}" }
    end
  end
  send_event('instadash', photos: photos)
end

1。)除了我之前定义的client_idclient_secret之外,我只需要将access_token添加到Instagram.configure部分。

2。)SCHEDULER正常工作,但需要拨打Instagram.user_recent_media("#{user_id}")而不是Instagram.media_search(instadash_location_lat,instadash_location_long)

3。)为此,我必须为user_id

设置第二个缺失变量

现在,该呼叫将按用户ID过滤最近的媒体,并将其输出到虚拟小部件中。

感谢您的参与和提示!这使我指出了文档的正确方向,并帮助我自己弄明白。