Merge pull request #250 from annando/1503-facebook-privacy

Facebook: Improved privacy detection, changed permissions
This commit is contained in:
Tobias Diekershoff 2015-03-29 10:35:27 +02:00
commit be15b6ba6a
2 changed files with 25 additions and 19 deletions

View file

@ -1,18 +1,10 @@
Installing the Friendica/Facebook connector #### Installing the Friendica/Facebook connector
Detailed instructions how to use this plugin can be found at Please register a Facebook application at [developers.facebook.com](https://developers.facebook.com/apps/async/create/platform-setup/dialog/)
the [How to: Friendica's Facebook Connector](https://github.com/friendica/friendica/wiki/How-to:-Friendica%E2%80%99s-Facebook-connector) page.
Vidoes and embeds will not be posted if there is no other content. Links Chose "Website" as platform. Next you have to let your application be reviewed. You need these permissions for that:
and images will be converted to a format suitable for the Facebook API and
long posts truncated - with a link to view the full post.
Facebook contacts will not be able to view private photos, as they are not able to publish_actions, publish_pages, user_posts, user_photos, user_status, user_videos, manage_pages
authenticate to your site to establish identity. We will address this
in a future release.
This addon will only post your entries to your Facebook account but won't fetch After your application was reviewed, your users can post to Facebook.
content from there.
Info: please make sure that you understand all aspects due to Friendica's
default licence which is: [MIT License](https://github.com/friendica/friendica/blob/master/LICENSE)

View file

@ -248,9 +248,10 @@ function fbpost_content(&$a) {
$o .= '<div id="fbpost-enable-wrapper">'; $o .= '<div id="fbpost-enable-wrapper">';
//read_stream,publish_stream,manage_pages,photo_upload,user_groups,offline_access //read_stream,publish_stream,manage_pages,photo_upload,user_groups,offline_access
//export_stream,read_stream,publish_stream,manage_pages,photo_upload,user_groups,publish_actions,user_friends,share_item,video_upload,status_update
$o .= '<a href="https://www.facebook.com/dialog/oauth?client_id=' . $appid . '&redirect_uri=' $o .= '<a href="https://www.facebook.com/dialog/oauth?client_id=' . $appid . '&redirect_uri='
. $a->get_baseurl() . '/fbpost/' . $a->user['nickname'] . '&scope=export_stream,read_stream,publish_stream,manage_pages,photo_upload,user_groups,publish_actions,user_friends,share_item,video_upload,status_update">' . t('Install Facebook Post connector for this account.') . '</a>'; . $a->get_baseurl() . '/fbpost/' . $a->user['nickname'] . '&scope=publish_actions,publish_pages,user_posts,user_photos,user_status,user_videos,manage_pages">' . t('Install Facebook Post connector for this account.') . '</a>';
$o .= '</div>'; $o .= '</div>';
} }
@ -261,8 +262,10 @@ function fbpost_content(&$a) {
$o .= '<div id="fbpost-enable-wrapper">'; $o .= '<div id="fbpost-enable-wrapper">';
//export_stream,read_stream,publish_stream,manage_pages,photo_upload,user_groups,publish_actions,user_friends,share_item,video_upload,status_update
$o .= '<a href="https://www.facebook.com/dialog/oauth?client_id=' . $appid . '&redirect_uri=' $o .= '<a href="https://www.facebook.com/dialog/oauth?client_id=' . $appid . '&redirect_uri='
. $a->get_baseurl() . '/fbpost/' . $a->user['nickname'] . '&scope=export_stream,read_stream,publish_stream,manage_pages,photo_upload,user_groups,publish_actions,user_friends,share_item,video_upload,status_update">' . t('Re-authenticate [This is necessary whenever your Facebook password is changed.]') . '</a>'; . $a->get_baseurl() . '/fbpost/' . $a->user['nickname'] . '&scope=publish_actions,publish_pages,user_posts,user_photos,user_status,user_videos,manage_pages">' . t('Re-authenticate [This is necessary whenever your Facebook password is changed.]') . '</a>';
$o .= '</div>'; $o .= '</div>';
$o .= '<div id="fbpost-post-default-form">'; $o .= '<div id="fbpost-post-default-form">';
@ -991,11 +994,15 @@ function fbpost_fetchwall($a, $uid) {
$access_token = get_pconfig($uid,'facebook','access_token'); $access_token = get_pconfig($uid,'facebook','access_token');
$post_to_page = get_pconfig($uid,'facebook','post_to_page'); $post_to_page = get_pconfig($uid,'facebook','post_to_page');
$mirror_page = get_pconfig($uid,'facebook','mirror_page');
$lastcreated = get_pconfig($uid,'facebook','last_created'); $lastcreated = get_pconfig($uid,'facebook','last_created');
if ((int)$post_to_page == 0) if ((int)$post_to_page == 0)
$post_to_page = "me"; $post_to_page = "me";
if ((int)$mirror_page != 0)
$post_to_page = $mirror_page;
$url = "https://graph.facebook.com/".$post_to_page."/feed?access_token=".$access_token; $url = "https://graph.facebook.com/".$post_to_page."/feed?access_token=".$access_token;
$first_time = ($lastcreated == ""); $first_time = ($lastcreated == "");
@ -1021,7 +1028,8 @@ function fbpost_fetchwall($a, $uid) {
if ($item->application->id == get_config('facebook','appid')) if ($item->application->id == get_config('facebook','appid'))
continue; continue;
if(isset($item->privacy) && ($item->privacy->value !== 'EVERYONE') && ($item->privacy->value !== '')) //if(isset($item->privacy) && ($item->privacy->value !== 'EVERYONE') && ($item->privacy->value !== ''))
if((isset($item->privacy) && ($item->privacy->value !== 'EVERYONE')) OR !isset($item->privacy))
continue; continue;
if (($post_to_page != $item->from->id) AND ((int)$post_to_page != 0)) if (($post_to_page != $item->from->id) AND ((int)$post_to_page != 0))
@ -1091,7 +1099,13 @@ function fbpost_fetchwall($a, $uid) {
$data = json_decode($feed); $data = json_decode($feed);
if (isset($data->images)) { if (isset($data->images)) {
$pagedata["images"][0]["src"] = $data->images[0]->source; $pagedata["images"][0]["src"] = $data->images[0]->source;
logger('fbpost_fetchwall: got fbid image '.$preview, LOGGER_DEBUG); logger('got fbid image from images for '.$item->object_id, LOGGER_DEBUG);
} elseif (isset($data->source)) {
$pagedata["images"][0]["src"] = $data->source;
logger('got fbid image from source for '.$item->object_id, LOGGER_DEBUG);
} elseif (isset($data->picture)) {
$pagedata["images"][0]["src"] = $data->picture;
logger('got fbid image from picture for '.$item->object_id, LOGGER_DEBUG);
} }
} }