首页 > 作文

系统集成Facebook授权发布帖子以及获取帖子评论等功能

更新时间:2023-04-07 13:30:36 阅读: 评论:0

公司的业务和海外贸易紧密连接,项目中需要对接facebook、google、twitter相关api,下面详细描述一下我们对接facebook中遇到的问题

1,注册facebook账户,facebook账户注册还是比较麻烦的,有ip限制,一个ip不能注册多个账户,很容易被封。注册完之后会有身份审核过程,这个过程尽量用真实身份,审核成功后就可以申请成为facebomight的用法ok开发者了。

2,成为facebook开发者之后,创建应用,获取应用编号和应用密钥,完善邮箱等官方需要提供的信息

3,完成公司验证,签署合同条款

4,创建测试帐号,项目需求需要的可以多创建几个测试帐号,互相加为好友

测试帐号可以在本地开发中使用,没有任何权限限制,所有的功能模块都可以通过测试帐号实现,在功能开发完成后,部署到一台线上的测试环境进行facebook的审核,线上域名必须添加ssl加密

5,添加fackbook登录,facebook登录api提供了sdk和图谱两种方式进行登录,在实际的开发中两者需要结合进行开发,我们是用下载的php版本的sdk,使用compor来获取依赖包,建议不要使用git去拉取代码,可能有些依赖包需要手动去安装,避免出现目明其妙的报错,下面是官方提供的sdk

6,添加fackbook登录需要创建应用程序

这里添加有效跳转uri,这里的跳转链接是在功能完善后,部署到线上环境提交给facebook审核需要的,本地测试不需要,例如本地locahost:8080是无法添加跳转uri的

facebook官方要求提供退出登录取消授权入口,至于这里的数据删除请求网址,笔者发现不是必须的,所以提供退出入口即可,以免审核不通过

7,facebook 权限列表

依据项目需求进行合理的申请,用不到的权限不要申请,如果项目需要用到的权限比较多,尽量一次申请不超过2个权限

申请的步骤:

1,添加申请理由, 就是描述一下项目如果使用这个权限和为用户带来哪些作用,尽量用英文描述,因为审核的平台是美国facebook的客服,是看不懂中文的!

2,录屏,这里需要用到录屏软件,官方有推荐很好用的一款录屏软件

3,提交申请,facebook的审核时间还是很及时的,一般不超过3天,两个工作日差不多就给回复了,只不过给到的回复太过于官方了,不够详细,需要多花点时间琢磨!

这里是我们申请成功的权限,新手第一次对接,感觉太南了,太南了。。。

8,这里总结一下,顺便吐槽一下facebook的api, 没有google写的详细,有些功能没有,api也没声明,遇到很多坑,折腾了好久,最好打听到是因为隐私政策不予给出,mmp。。。

最后提一下这里用到的 oauth授权流程,没有接触过的同学先去了解一下,我这里大概说一下。

通过之前创建的应该,可以获取应用编号和应用密钥,通过这两者获取到一个有效期为3个月的token, 每次请求facebook api的时候必须带着这个token去获取一个临时多硫化钠token,然后通过这个临时token再进行请求最后的接口数据

这里我贴一下php相关代码

授权登录和获取临时访问口令:

 1      $appid = facebook appid; 2         $appcret = facebook appcret; 3         $callbackurl = facebook callbackurl; 4         $fb = new facebook\facebook([ 5             'app_id' => $appid, 6             'app_cret' => $appcret, 7             'default_graph_version' => 'v2.10', 8         ]); 9 10         $helper = $fb->getredirectloginhelper();11         try {12             $accesstoken = $helper->getaccesstoken();13         } catch(facebook\exceptions\facebookresponexception $e) {14             echo 'graph returned an error: ' . $e->getmessage();15             exit;16         } catch(facebook\exceptions\facebooksdkexception $e) {17             echo 'facebook sdk returned an error: ' . $e->getmessage();18             exit;19         }20 21         if (! ist($accesstoken)) {22             if ($helper->geterror()) {23                 header('http/1.0 401 unauthorized');24                 echo '请检查账号设置,facebook账号无法获得授权,详情:' . $helper->geterror()   . ' ' . $helper->geterrorcode() . ' ' . $helper->geterrorreason()  . ' ' . $helper->geterrordescription() . "\n";25             } el {26                 header('http/1.0 400 bad request');27                 echo 'bad request';28             }29             exit;30         }31 32         $accesstoken = $accesstoken->getvalue();33         $oauth2client = $fb->getoauth2client();34         $tokenmetadata = $oauth2client->debugtoken($accesstoken);35         $tokenmetadata->validateappid($appid);36         $tokenmetadata->validateexpiration();37 38         $appid = $tokenmetadata->getfield('app_id');39         $type = $tokenmetadata->getfield('type');40         $urid = $tokenmetadata-高情商的幽默对话>getfield('ur_id');41         $application = $tokenmetadata->getfield('application');42         $isvalid = $tokenmetadata->getfield('is_valid');43         $expiresat = $tokenmetadata->getfield('data_access_expires_at');44         $metadata = [45             "app_id" => $appid,46             "type"=> $type,47             "ur_id" => $urid,48             "application" => $application,49             "expires_at" => $expiresat,50             "is_valid" => $isvalid51         ];52 53         $auth = new facebook\authentication\accesstoken($accesstoken);54         if (! $auth->islonglived()) {55             try {56                 $accesstoken = $oauth2client->getlonglivedaccesstoken($accesstoken);57             } catch (facebook\exceptions\facebooksdkexception $e) {58                 echo "<p>error getting long-lived access token: " . $e->getmessage() . "</p>\n\n";59                 exit;60             }61         }62 63         65         $this->cache->t($this->facebookaccesstokenkey,(string) $accesstoken );66         $this->cache->t($this->facebookkey, json_encode($metadata));67 68         header("location: {$callbackurl}");  
 1   /** 2      * 获取临时访问口令 3      * @param $pageid 4      * @param $access_token 5      * @return mixed 6      */ 7     public function getpageaccesstoken($pageid, $access_token) 8     { 9         $accesstokenurl = "https://graph.facebook.com/v4.0/{$pageid}?fields=access_token&access_token={$access_token}";10         $pageaccesstokeninfo = curl($accesstokenurl);11         try{12             $pageaccesstokeninfo = json_decode($pageaccesstokeninfo, true);13             $pageaccesstoken = $pageaccesstokeninfo['access_token'];14         }catch (exception $e) {15             $this->showresults(-1, null, '获取page_access_token失败!');16         }17 18         return $pageaccesstoken;19     }

唤起授权对话框,我们的业务权限是,权限不同的自行更改!

   /**     * 获取facebook授权code     */    public function bindaction(){        $redirecturl = facebook redirecturl;        $appid = facebook appid;        $appcret = facebook appcret;        $fb = new facebook\facebook([            'app_id' => $appid,            'app_cret' => $appcret,            'default_graph_version' => 'v2.10',        ]);        $helper = $fb->getredirectloginhelper();        $permissions = ['manage_pages','publish_pages'];        $codeurl = $helper->getloginurl($redirecturl, $permissions);        $this->showresults(1, ['url' => $codeurl]);    }

完整的发帖代码

  /**     * facebook分享发布     */    public function facebookshareaction()    {        $data = getpost('data');//一次请求中只能有一个选项  1,分享链接, 2单张图片链接, 3,多张图片id        $content['message'] = $data['message'];        if ($data['link']) {            $content['link'] = $data['link'];        } el if ($data['url']) {            $content['link'] = '';            $content['url'] = $data['url'];        } el if ($data['attached_media']) {            $content['link'] = '';            $content['url'] = '';            $media = explode(',', $data['attached_media']);            if (count($media) >= 10) {                $this->showresults(-2, null, '一次上传最多不能超过9张图片!');            }            foreach ($media as $mediaid) {                $temp[] = ['media_fbid' => $mediaid];            }            $content['attached_media'] = json_encode($temp);        }        $appid = facebook appid;        $appcrelol卡萨丁t = facebook appcret;        $fbaccesstoken = $this->cache->get($this->facebookaccesstokenkey);        if (!$fbaccesstoken) {            $this->showresults(-1, null, '请先绑定facebook账号!');        }        $fb = new facebook\facebook([            'app_id' => $appid,            'app_cret' => $appcret,            'default_graph_version' => 'v2.3',        ]);        try {            $respon = $fb->get(                '/me/accounts',                $fbaccesstoken            );        } catch(facebookexceptionsfacebookresponexception $e) {            echo 'graph returned an error: ' . $e->getmessage();       考试激励语     exit;        } catch(facebookexceptionsfacebooksdkexception $e) {            echo 'facebook sdk returned an error: ' . $e->getmessage();            exit;        }        $accountinfo = $respon->getbody();        $accountinfo = json_decode($accountinfo, true);        $pageid =  $accountinfo['data'][0]['id'];        $accesstoken =  $accountinfo['data'][0]['access_token'];        $pageaccesstoken = $this->getpageaccesstoken($pageid, $accesstoken);        try {            $respon = $fb->post(                '/' . $pageid . '/feed',                $content,                $pageaccesstoken            );        } catch(facebookexceptionsfacebookresponexception $e) {            echo 'graph returned an error: ' . $e->getmessage();            exit;        } catch(facebookexceptionsfacebooksdkexception $e) {            echo 'facebook sdk returned an error: ' . $e->getmessage();            exit;        }        $info = $respon->getbody();        $info = json_decode($info, true);        $this->showresults(1, ['data' => ['id' => $info['id']]]);    }

最后祝大家对接api成功!

本文发布于:2023-04-07 13:30:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/475514d849ad91b95886b79a02a58967.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:系统集成Facebook授权发布帖子以及获取帖子评论等功能.doc

本文 PDF 下载地址:系统集成Facebook授权发布帖子以及获取帖子评论等功能.pdf

标签:权限   帐号   测试   项目
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图