2013-03-26 3 views
4

내 메시지에 게시해야 자신의 페이 스북 페이지; 그리고 그것을 할 필요가 프로그래밍 방식으로 (내 경우에는 파이썬을 사용하여).Facebook : 프로그래밍 방식으로 액세스 토큰을 검색하는 방법?

import urllib, urllib2 

access_token='XXXX' 
fb_page_id='YYYY' # my page ID 

post_data = {'access_token':access_token, 'message':'hey this is a test!'} 
request_path = str(fb_page_id)+'/feed' 
post_data = urllib.urlencode(post_data) 
response = urllib2.urlopen(
    'https://graph.facebook.com/%s' % request_path, post_data 
) 

FB 페이지에서 생성 된 포스트의 ID가 제대로 반환됩니다 :

In [11]: response.readlines() 
Out[11]: ['{"id":"135386143198208_461964357207050"}'] 

문제 :

나는 (파이썬)이 코드를 사용하여이 부분을 어떻게 관리 access_token을 생성하고 위의 API 요청을 수행하려면 을 수동으로here의 세 단계를 따르십시오.

실제로이 수동 프로세스는 이므로이 작업을 cron 작업에서 실행해야합니다. 따라서 페이스 북의 access_token은 일시적이기 때문에 자동화해야합니다. 나는. 이 스크립트를 실행할 때마다 액세스 토큰을 가져와야합니다. 그렇게하는 방법?

관련 단계를 전달할 때마다 응답 (curl, JavaScript, Java, PHP)에 스크립팅 도구를 자유롭게 사용하십시오. 서버 측 언어 (Python/Ruby/PHP)를 사용하여이 작업을 수행해야합니다.

+2

downvote에 대한 이유가 무엇입니까 ?? 감사합니다;) –

+0

Facebook 액세스 토큰에 대한 수동 사용자 인증을 무시할 수 없습니다. 그것은 목적을위한 것입니다. – phwd

+0

@phwd 그리고 수동으로 액세스 토큰을 얻으려면 적어도 한 달에 한 번씩 수동으로 인증해야합니다 ... 맞습니까? –

답변

4

(사용자) 액세스 토큰을 확장하면 실제로 만료되지 않는 (페이지) 액세스 토큰을 요청할 수 있습니다. 당신이 관심을 가질만한, https://developers.facebook.com/docs/howtos/login/extending-tokens/

+0

실로 당신 말이 맞습니다! 감사! 이것은 한 번만 할 수 있고 만료되지 않기 때문에 프로그래밍 방식으로 수행 할 필요조차 없습니다. 옳은? –

+0

그리고'APP_ID'와'APP_SECRET'을 그 URL에 전달해야합니까? –

+0

Facebook 앱을 등록 할 때 앱 ID와 비밀 정보가 표시됩니다. (페이지를 만든 후 페이지 상단에 표시됨) –

4

은 수명이 짧은 토큰을 프로그래밍 방식으로 검색 할 수 없습니다. 그것은 사용자 상호 작용의 목적을 무효화합니다.

Facebook은 의도적으로 사용자가 설치하는 앱을 완전히 수동으로 제어 할 수 있도록하기 위해이 방법을 고안했습니다.

에 HTTP 요청을 수행하여

(사용자가 암호를 변경하여, 예를 들어, 토큰을 무효화하는 경우 또는 이전)은 다음 2 개월 과정을 자동화 할 수있는 사용자 부여 초기 액세스하면

https://graph.facebook.com/oauth/access_token? 
    grant_type=fb_exchange_token&   
    client_id=APP_ID& 
    client_secret=APP_SECRET& 
    fb_exchange_token=SHORT_LIVED_ACCESS_TOKEN 

이 두 달이 지나면 사용자는 위의 코드를 사용하여 다시 확장 할 수있는 새로운 짧은 수명 토큰을 제공하는 응용 프로그램에 대한 액세스 권한을 부여해야합니다.

0

프로그래밍도 일반 사용자를위한 페이스 북 토큰을 얻으려면 :

은 다음 문서의 "페이지 액세스 토큰을 확장"절을 참조하십시오 https://github.com/fbessez/Tinder/blob/master/fb_auth_token.py 자동으로 검색하는 파이썬 스크립트입니다 토큰은 제공된 전자 메일/암호입니다.

lxml, requestsrobobrowser을 설치해야합니다 (필수 조건이므로).두 requestsrobobrowser 쉽게

pip install robobrowser

pip install requests

가 컴파일해야 할 것이다대로 LXML이는 "조금"더 까다 롭습니다을 실행하는 aquired 할 수 있습니다 (최신 버전을 가지고). 이것을 위해서 따라하십시오 : How to install lxml on Ubuntu

0

이 코드를 작성한 영혼을 축복하십시오. 나 아니지만 어딘가에서 찾았 어. 원활하게 작동합니다. 전자 메일 & 암호로이 기능을 호출하십시오.

MOBILE_USER_AGENT = "Mozilla/5.0 (Linux; U; en-gb; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.16 Safari/535.19" 
FB_AUTH = "https://www.facebook.com/v2.6/dialog/oauth?redirect_uri=fb464891386855067%3A%2F%2Fauthorize%2F&display=touch&state=%7B%22challenge%22%3A%22IUUkEUqIGud332lfu%252BMJhxL4Wlc%253D%22%2C%220_auth_logger_id%22%3A%2230F06532-A1B9-4B10-BB28-B29956C71AB1%22%2C%22com.facebook.sdk_client_state%22%3Atrue%2C%223_method%22%3A%22sfvc_auth%22%7D&scope=user_birthday%2Cuser_photos%2Cuser_education_history%2Cemail%2Cuser_relationship_details%2Cuser_friends%2Cuser_work_history%2Cuser_likes&response_type=token%2Csigned_request&default_audience=friends&return_scopes=true&auth_type=rerequest&client_id=464891386855067&ret=login&sdk=ios&logger_id=30F06532-A1B9-4B10-BB28-B29956C71AB1&ext=1470840777&hash=AeZqkIcf-NEW6vBd" 

def get_access_token(email, password): 
    s = robobrowser.RoboBrowser(user_agent=MOBILE_USER_AGENT, parser="lxml") 
    s.open(FB_AUTH) 
    ##submit login form## 
    f = s.get_form() 
    f["pass"] = password 
    f["email"] = email 
    s.submit_form(f) 
    ##click the 'ok' button on the dialog informing you that you have already authenticated with the Tinder app## 
    f = s.get_form() 
    s.submit_form(f, submit=f.submit_fields['__CONFIRM__']) 
    ##get access token from the html response## 
    access_token = re.search(r"access_token=([\w\d]+)", s.response.content.decode()).groups()[0] 
    #print s.response.content.decode() 
    return access_token 
관련 문제