snarfed / bridgy

📣 Connects your web site to social media. Likes, retweets, mentions, cross-posting, and more...
https://brid.gy
Creative Commons Zero v1.0 Universal
718 stars 52 forks source link

facebook: apply for publish_pages permission #676

Closed snarfed closed 8 years ago

snarfed commented 8 years ago

we have manage_pages, but evidently we also need publish_pages.

https://brid.gy/facebook/526183257511407#publishes

https://developers.facebook.com/tools/debug/accesstoken/ says the access token currently has: user_website, user_events, user_photos, user_status, user_posts, rsvp_event, manage_pages, publish_actions, user_actions.news, public_profile

log:

Params: [(u'state', u'{"include_link":"include","source_key":"aglzfmJyaWQtZ3lyIQsSDEZhY2Vib29rUGFnZSIPNTI2MTgzMjU3NTExNDA3DA","source_url":"https://peachtreetranscription.com/tau-deposits-may-be-causing-alzheimers-disease/","target_url":"http://brid.gy/publish/facebook"}'), (u'code', u'...')]
Source: https://brid.gy/facebook/526183257511407 , features [u'publish', u'listen'], status enabled, poll status ok
Publish entity: aglzfmJyaWQtZ3lyeQsSDVB1Ymxpc2hlZFBhZ2UiUmh0dHBzOi8vcGVhY2h0cmVldHJhbnNjcmlwdGlvbi5jb20vdGF1LWRlcG9zaXRzLW1heS1iZS1jYXVzaW5nLWFsemhlaW1lcnMtZGlzZWFzZS8MCxIHUHVibGlzaBiAgICAgOSRCgw
requests.get https://peachtreetranscription.com/tau-deposits-may-be-causing-alzheimers-disease/ {'headers': {'User-Agent': '...'}}
Parsed microformats2: {
  "items": [
  {
    "type": ["h-entry"],
    "properties": {
    "photo": ["https://secure.gravatar.com/avatar/9eab16981cc1887531f23da2cf7fb0d4?s=96&d=mm&r=g"],
    "name": ["14Jun 16..."]
  },
  "..."
}

Converted to ActivityStreams object: {
  "url": "https://peachtreetranscription.com/tau-deposits-may-be-causing-alzheimers-disease/",
  "image": [{"url": "https://secure.gravatar.com/avatar/9eab16981cc1887531f23da2cf7fb0d4?s=96&d=mm&r=g"}],
  "displayName": "14Jun 16...",
  "objectType": "note"
}
urlopen GET https://graph.facebook.com/v2.6/me/albums?fields=id,count,created_time,from,link,name,privacy,type,updated_time&access_token=... {}
urlopen POST https://graph.facebook.com/v2.6/685802571549474/photos?access_token=... {}
Error 403, response body: {"error":{"message":"(#200) Requires extended permission: manage_pages and publish_pages","type":"OAuthException","code":200,"fbtrace_id":"HuooZKISnFl"}}
Error: {"error":{"message":"(#200) Requires extended permission: manage_pages and publish_pages","type":"OAuthException","code":200,"fbtrace_id":"HuooZKISnFl"}} HTTP Error 403: Forbidden
Traceback (most recent call last):
  File "/base/data/home/apps/s~brid-gy/7.393998836515688596/publish.py", line 245, in _run
    result = self.attempt_single_item(item)
  File "/base/data/home/apps/s~brid-gy/7.393998836515688596/publish.py", line 365, in attempt_single_item
    obj, include_link=include_link, ignore_formatting=ignore_formatting)
  File "/base/data/home/apps/s~brid-gy/7.393998836515688596/local/lib/python2.7/site-packages/granary/facebook.py", line 571, in create
    ignore_formatting=ignore_formatting)
  File "/base/data/home/apps/s~brid-gy/7.393998836515688596/local/lib/python2.7/site-packages/granary/facebook.py", line 775, in _create
    resp = self.urlopen(api_call, data=urllib.urlencode(msg_data))
  File "/base/data/home/apps/s~brid-gy/7.393998836515688596/local/lib/python2.7/site-packages/granary/facebook.py", line 1687, in urlopen
    resp = util.urlopen(urllib2.Request(url, **kwargs))
...
HTTPError: HTTP Error 403: Forbidden
snarfed commented 8 years ago

publish_pages details: https://developers.facebook.com/docs/facebook-login/permissions#reference-publish_pages

from that section:

Common Usage Let people explicitly publish content from your app to any of the Facebook Pages they manage from within a custom composer.

so it sounds doable!

snarfed commented 8 years ago

ooh, we already have publish_pages! https://developers.facebook.com/apps/256884317673197/review-status/#u_0_14 . i just need to add it to the publish signup.

kylewm commented 8 years ago

🎉 The best facebook permission is the one you already have!