Develop
2017.02.27 11:23
[ios] Facebook Cache 갱신하는 함수
조회 수 1331 댓글 0
첨부 '1' |
|
---|
페이스북에 URL을 공유할 경우 페이스북은 해당 URL에 대한 OpenGraph 정보들을 캐싱한다.
메타 정보가 수시로 바뀌는 컨텐츠의 경우 Facebook의 URL 공유시 잘못된 정보가 매핑될 수 있다.
(이전에 캐싱됐던 내용이 적용되는 것)
이를 갱신하기 위한 방법이 여러 가지가 있다.
1. Facebook for Developers (개발자도구) 사이트를 이용하여 요청
Facebook의 개발자 사이트에서 OG 캐시의 동작을 확인하고 갱신하는 웹페이지를 제공한다.
다음 URL을 이용해 확인할 수 있다.
-> https://developers.facebook.com/tools/debug/
2. Facebook API 이용
Facebook에서 OG 캐시를 갱신할 수 있는 HTTP 기반의 API를 제공하고 있다.
다양한 플랫폼과 프로그래밍 언어를 통해 이 API를 호출하여 갱신할 수 있다.
# PHP + Curl (Web, Server-side)
$url = 'https://graph.facebook.com'; $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_POST, true ); $params = array( 'id' => 'http://www.picomax.net/', 'scrape' => true ); $data = http_build_query($params); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); curl_exec( $ch ); $httpCode = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
# Javascript (Web, Front-end)
// with jQuery $.post( 'https://graph.facebook.com', { id: 'http://www.picomax.net/', scrape: true }, function(response){ console.log(response); } );
# Vanilla Javascript (Web, Front-end)
//Check if facebook_refresh query string is present if(window.location.search.indexOf("facebook_refresh") >= 0) { //Feature check browsers for support if(document.addEventListener && window.XMLHttpRequest && document.querySelector) { //DOM is ready document.addEventListener("DOMContentLoaded", function() { var httpRequest = new XMLHttpRequest(); httpRequest.open("POST", "https://graph.facebook.com", true); httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4) { console.log("httpRequest.responseText", httpRequest.responseText); } }; //Default URL to send to Facebook var url = window.location; //og:url element var og_url = document.querySelector("meta[property='og:url']"); //Check if og:url element is present on page if(og_url != null) { //Get the content attribute value of og:url var og_url_value = og_url.getAttribute("content"); //If og:url content attribute isn't empty if(og_url_value != "") { url = og_url_value; } else { console.warn('<meta property="og:url" content=""> is empty. Falling back to window.location'); } } else { console.warn('<meta property="og:url" content=""> is missing. Falling back to window.location'); } //Send AJAX httpRequest.send("scrape=true&id=" + encodeURIComponent(url)); }); } else { console.warn("Your browser doesn't support one of the following: document.addEventListener && window.XMLHttpRequest && document.querySelector"); } }
# Objective-C (iOS)
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSString *targetId = @"http://www.picomax.net"; //[self updateFacebookCache:targetId]; } - (void)updateFacebookCache:(NSString *)targetId { NSString *url = @"https://graph.facebook.com"; NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; [params setObject:targetId forKey:@"id"]; [params setObject:@"true" forKey:@"scrape"]; AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [manager POST:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"success!"); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"error: %@", error); }]; }
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
13 | Develop |
[ios] 기본 네비게이션바의 타이틀, back버튼 위치와 속성 변경
![]() |
hooni | 2016.05.16 | 2200 |
12 | Develop |
[ios] UUID 생성 + Key Chain 연동
![]() |
hooni | 2016.05.13 | 4792 |
11 | Develop |
[ios][swift] 초간단 카달로그 앱 (Catalog App)
![]() |
hooni | 2016.06.27 | 7459 |
10 | Develop |
[iphone] 아이폰 어플 모음 ㅋㅋ
![]() |
hooni | 2013.04.23 | 13707 |
9 | Develop |
[doc] Json Framework 설치와 사용
![]() |
hooni | 2013.04.23 | 21962 |
8 | Develop |
[ios] iOS 6.0 이상 회전 하기 (이전 버전과 비교 변경 부분)
![]() |
hooni | 2014.01.27 | 34244 |
7 | Develop |
[ios] iOS 4.0 beta 에서 3.1.3으로 다운그레이드 하는 법
![]() |
hooni | 2013.04.23 | 37543 |
6 | Develop |
[ios] 미스터피자(Mr.pizza) 어플
![]() |
hooni | 2013.04.23 | 42697 |
5 | Develop | [ios] 배열(NSArray) 연산과 간단한 애니메이션(split images) | hooni | 2013.10.31 | 45597 |
4 | Develop | [ios] UIAlertView 초간단 샘플 ㅎㅎ | hooni | 2013.10.14 | 46206 |
3 | Develop | [ios] Random Thoughts: Rand() vs. arc4random() | hooni | 2013.10.31 | 68125 |
2 | Develop | [ios] 언어, 지역, 국가 설정 가져오기 | hooni | 2014.05.12 | 272286 |