Development Tip

Facebook Graph API 2.0에서 사용자 이름 필드 가져 오기

yourdevel 2020. 12. 25. 10:36
반응형

Facebook Graph API 2.0에서 사용자 이름 필드 가져 오기


"이전"Facebook Graph API에는 사람이 읽을 수있는 프로필 URL을 만드는 데 사용할 수있는 "사용자 이름"필드가 있습니다. 예를 들어 내 사용자 이름은 "sebastian.trug"이며 결과적으로 Facebook 프로필 URL http://www.facebook.com/sebastian.trug가 됩니다.

Graph API 2.0에서 Facebook은 "/ me"에서 검색된 사용자 데이터에서 "username"필드제거했습니다 .

2.0 API를 통해이 데이터를 가져올 수있는 방법이 있습니까? 아니면 "사용자 이름"이 이제 사용되지 않는 필드로 취급됩니까?


사용자 이름은 Facebook을 통해 이메일을 보내는 한 가지 방법이기 때문에 Facebook은 사용자 이름을 제거했습니다.

예를 들어 URL이 주어지면 http://www.facebook.com/sebastian.trug

해당하는 Facebook 이메일은 sebastian.trug@facebook.com

이메일로 전송되는 경우 messages직접 ( message설정이로 설정된 경우 public), 그렇지 않으면 other받은 편지함으로 수신됩니다.


usernameUser 개체 필드가 제거되었으며 Graph API v2.0에는 존재하지 않습니다. API v2.0에서는 사용자의 FB 사용자 이름을 가져올 수있는 방법이 없습니다.

출처 : https://developers.facebook.com/docs/apps/changelog#v2_0_graph_api

"/ me / username은 더 이상 사용할 수 없습니다."


@Simon Cross-더 이상 사용되지 않는 것이 문서화되어 있습니다. 그것은 문제가 아닙니다. 문제는 그것을 얻는 방법과 더 나아가 Facebook이 왜 그렇게 끔찍한 선택을하고 사용자 이름을 제거했는지 궁금합니다. 사용자 이름을 사용하여 서비스에 계정을 만드는 수백 개의 애플리케이션이 손상됩니다.

@ user3596238-2015 년 4 월 말까지 제공 될 V.1 API를 고수 할 수 있습니다. 단연 최고의 솔루션은 아니지만 Facebook은 어쨌든 관련성이 없을 수 있습니다. https://developers.facebook.com/docs/apps/changelog

해결 방법 : 사용자에게 실제 Facebook 로그인 외에 사용자 이름을 요청합니까? -제 생각에는 어쨌든 Facebook 로그인이 완전히 무의미합니다.


2.0 SDK는 username더 이상 필드를 제공 하지 않지만 사용자 ID 번호 (그래도 그래프에 액세스하는 데 사용할 가능성이 높음)가 있으면 매우 쉽게 스크랩됩니다.

URL은로 facebook.com/<user id>리디렉션되며 facebook.com/<username>원하는대로 추출 할 수 있습니다.


내 접근 방식은 사용자 프로필을 통해 nokogiri를 사용하여 사용자 이름을 스크랩하는 것입니다. 다음과 같이 (루비에서) :

html = RestClient.get("http://facebook.com/123123xxx)
doc = Nokogiri::HTML(html)
username = doc.css('head meta')[1].attributes["content"].value

방법 중 하나는 cURL을 사용하여 facebook.com/{userid}에 액세스 한 다음 리디렉션을 따르는 것입니다.

페이지가 facebook.com/{username}으로 다시 지정됩니다.


@RifkiFauzi의 답변 에서 영감을 얻은 여기 순수한 Python으로 된 내 솔루션이 있습니다.

#get html of a page via pure python ref. https://stackoverflow.com/a/23565355/248616
import requests
r = requests.get('http://fb.com/%s' % FB_USER_ID) #open profile page of the facebook user
r.raise_for_status()
html = r.content

#search string with regex ref. https://stackoverflow.com/a/4667014/248616
import re
# m = re.search('meta http-equiv="refresh" content="0; URL=/([^?]+)\?', html)
m = re.search('a class="profileLink" href="([^"]+)"', html)
href = m.group(1) #will be https://www.facebook.com/$FB_USER_NAME on 201705.24
username = href.split('/')[-1]
print(href)
print(username)

https://graph.facebook.com/?id=100005908663675

간단히 ID를 변경하십시오.

참조 URL : https://stackoverflow.com/questions/23428498/get-username-field-in-facebook-graph-api-2-0

반응형