123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?php
- namespace App\Services\Smm;
- use App\Services\Contracts\SmmPlatformInterface;
- use Illuminate\Http\Request;
- use Facebook\Facebook;
- class FacebookService implements SmmPlatformInterface
- {
- public $fb = null;
- public $pageAccessToken = null;
- public function __construct() {
- $this->fb = new Facebook([
- 'app_id' => env('SSM_FACEBOOK_APP_ID'),
- 'app_secret' => env('SSM_FACEBOOK_APP_SECRET'),
- 'default_graph_version' => 'v22.0',
- ]);
-
- }
-
- public function login()
- {
-
- $helper = $this->fb->getRedirectLoginHelper();
- $permissions = ['public_profile','email'];
- $distSiteUrl = env('DIST_SITE_URL');
- $loginUrl = $helper->getLoginUrl(env('DIST_SITE_URL').'/open/callback/facebook', $permissions);
- return ['status'=>true, 'data' => ['url'=>$loginUrl]];
- }
-
- public function loginCallback(Request $request)
- {
-
- $helper = $this->fb->getRedirectLoginHelper();
- try {
- $accessToken = $helper->getAccessToken();
- } catch (Facebook\Exceptions\FacebookResponseException $e) {
- return ['status' => false, 'data' => 'Graph API错误:' . $e->getMessage()];
- } catch (Facebook\Exceptions\FacebookSDKException $e) {
- return ['status' => false, 'data' => 'SDK错误:' . $e->getMessage()];
- }
- if (isset($accessToken)) {
-
- $oAuth2Client = $this->fb->getOAuth2Client();
- $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
- $useriInfo = $this->getFacebookUser($longLivedAccessToken);
- return ['status' => true, 'data' => ['access_token' => $longLivedAccessToken,'user_name'=>$useriInfo['name'],'user_id'=>$useriInfo['id']]];
- } else {
- return ['status' => false, 'data' => '无法获取访问令牌'];
- }
- }
- public function postImage($message,$imagePath) {
- try {
- $response = $this->fb->post(
- '/me/photos',
- [
- 'source' => $this->fb->fileToUpload($imagePath),
- 'message' => $message,
- ],
- $this->userAccessToken
- );
- $graphNode = $response->getGraphNode();
- return ['status' => true, 'data' => ['id' => $graphNode['id']]];
- } catch (Facebook\Exceptions\FacebookResponseException $e) {
- $errorMsg = 'Graph API错误:' . $e->getMessage();
- } catch (Facebook\Exceptions\FacebookSDKException $e) {
- $errorMsg = 'SDK错误:' . $e->getMessage();
- }
- return ['status'=>false,'data' => $errorMsg];
- }
- public function postVideo($message,$videoPath) {
- try {
- $response = $this->fb->post(
- '/me/videos',
- [
- 'source' => $this->fb->fileToUpload($videoPath),
- 'title' => $message,
- 'description' => '',
- ],
- $this->userAccessToken
- );
- $graphNode = $response->getGraphNode();
- return ['status' => true, 'data' => ['id' => $graphNode['id']]];
- } catch (Facebook\Exceptions\FacebookResponseException $e) {
- $errorMsg = 'Graph API错误:' . $e->getMessage();
- } catch (Facebook\Exceptions\FacebookSDKException $e) {
- $errorMsg = 'SDK错误:' . $e->getMessage();
- }
- return ['status'=>false,'data' => $errorMsg];
- }
- public function getComments($postId) {
- }
- public function replyToComment($commentId) {
- }
- public function deleteComment($commentId) {
- }
-
- public function getFacebookUser($accessToken)
- {
- try {
-
- $this->fb->setDefaultAccessToken($accessToken);
-
- $response = $this->fb->get('/me?fields=name,id');
- $userNode = $response->getGraphUser();
- return [
- 'name' => $userNode->getName(),
- 'id' => $userNode->getId(),
- 'error' => null
- ];
- } catch (FacebookResponseException $e) {
-
- return [
- 'name' => null,
- 'id' => null,
- 'error' => 'Graph API Error: ' . $e->getMessage()
- ];
- } catch (FacebookSDKException $e) {
-
- return [
- 'name' => null,
- 'id' => null,
- 'error' => 'SDK Error: ' . $e->getMessage()
- ];
- } catch (Exception $e) {
-
- return [
- 'name' => null,
- 'id' => null,
- 'error' => 'General Error: ' . $e->getMessage()
- ];
- }
- }
- }
|