2013-12-10 15 views
2

我需要使用SSL協議嵌入Instagram視頻或照片,所以我可以在Facebook應用程序中顯示它。如何使用SSL嵌入Instagram視頻或圖片?

如果我使用以下URL插入iframe https://instagram.com/p/hvisAyBQZ0/embed/它將加載http中的所有資源,但不加載https。

UPDATE: 
This is the HTTPS Response, it's a 302 response. 

Connection: keep-alive 
Content-Length: 154 
Content-Type: text/html 
Date: Tue, 10 Dec 2013 15:58:20 GMT 
Location: http://instagram.com/p/hvisAyBQZ0/embed/ 
Server: nginx 

回答

0

根據Mike Krieger的this old Google Groups post,您可以通過API獲取URL,然後用distillery.s3.amazonaws.com替換url的開頭。

例如:http://images.ak.instagram.com/profiles/profile_539562_75sq_1386973442.jpg可以變成//distillery.s3.amazonaws.com/profiles/profile_539562_75sq_1386973442.jpg,它可以在https上正常工作。

它看起來Instagram現在使用各種CDN,所以你必須有一點聰明與重寫規則。這是我的代碼

def sslify_instagram_cdn_url(url): 
    """Intercept IG CDN urls and serve using a SSL-friendly CDN instead""" 
    replace_prefixes = (
     ('^http://images.ak.instagram.com(.*)$', '//distillery.s3.amazonaws.com%s'), 
     ('^http://distilleryimage([0-9]*).ak.instagram.com(.*)$', '//distilleryimage%s.s3.amazonaws.com%s'), 
     ('^http://origincache-([a-z]*).fbcdn.net(.*)$', '//origincache-%s.fbcdn.net%s'), 
     ('^http://distilleryimage([0-9]*).s3.amazonaws.com(.*)$', '//distilleryimage%s.s3.amazonaws.com%s'), 
     ('^http://scontent-([a-z]).cdninstagram.com(.*)$', '//scontent-%s.cdninstagram.com%s'), 
     ('^http://photos-[a-z].ak.instagram.com/hphotos-ak-[0-9a-z]{3,4}/(.*)$', '//origincache-frc.fbcdn.net/%s'), 
    ) 
    for prefix, replacement in replace_prefixes: 
     results = re.findall(prefix, url) 
     if not results: 
      continue 
     return replacement % results[0] 
    return url 

被警告,如果Instagram更改其CDN設置,這可能會中斷。但是現在這是一個可行的方法。

+0

從我的測試中看,Instagram越來越多地使用Facebook CDN(fbcdn.net URLs),這是個好消息,因爲這些可以簡單地用'//:'替換'http://' – johnboiles

0

爲此,您需要實施Instagram的Developer API

你會發現,所有的端點都可以在https,尤其...

https://api.instagram.com/v1/media/3?access_token=[redacted]

...這將檢索特定照片或視頻。

+0

但我需要原生的嵌入框架。 但是,當我檢索某個特定的照片或視頻時,它僅在http中可用。在https中更改我有證書驗證錯誤。 –

+0

右鍵 - 本地嵌入框架只能通過HTTP訪問。如果您需要HTTPS,唯一的選擇是使用開發人員API。 – brandonscript

+0

不正確,如果我使用API​​,我有單個圖像的HTTP URL。將其更改爲HTTPS,我有SSL錯誤。 –

1

不幸的是,Instagram不支持傳統嵌入的HTTPS。他們所做的只是在你自己發現的情況下重定向到http。

或者,您可以使用<img>標籤嵌入圖片本身。這些圖片可以通過HTTPS提供有效的SSL證書。

例子:

<img src="//instagram.com/p/hvisAyBQZ0/media/?size=t" alt="Thumbnail (150x150)"> 
<img src="//instagram.com/p/hvisAyBQZ0/media/?size=m" alt="Medium (305x306)"> 
<img src="//instagram.com/p/hvisAyBQZ0/media/?size=l" alt="Large (640x640)"> 

所有這些URL實際上重定向,但目標URL似乎支持HTTPS,雖然它不是在official documentation提及。

這當然不是常規嵌入的滿意替代品,因爲Instagram視頻無法像這樣投放(僅限預覽圖像)。但是也許對一些人來說總比沒有好。

+0

我不能相信Instagram不支持SSL,他們在什麼星球上?來Instagram上,請給我們SSL支持。 –

+0

不幸的是,自從Instagram支持視頻以來,這不是一個完整的解決方案。 – Asaf