2010-12-19 17 views
2

私は何も助けてくれない数多くのチュートリアルやドキュメントを掘り下げてうんざりです。私は(すべてが管理コントロールパネルの内側に配置された)今持っている何Facebook PHP SDK - 特定のアカウントでログインする必要があります

  1. ユーザーが正しいアカウント(付与された権限を持つページの管理者)にログインしている場合は、すべてが正常に動作しますが、ページ上のポストは次のように掲載されています偽装サイト。
  2. 彼が他のアカウントにログインしている場合、何も起こりません。サイトは彼を自分の壁にリダイレクトします。
  3. 彼は任意のアカウントにログインしていない場合、彼はFacebookのログインにリダイレクトされます - 彼は正しいアカウントにログオンした場合、彼はACPに戻ります(それが彼のフォームをクリアしますので、それは、悪いソリューションです)

Iログインしている場合

  1. 、それは私がuのだ現時点で具体的な(正しい)アカウント

へのログインと

  • エルスポップアップあったようにすべてのもの:達成したいですPHPのみを歌いますが、JSのソリューションは許可されています。

    マイコード:

    <?php 
    /*(...)*/ 
    $facebook = new Facebook(array(
         'appId' => $apiid, 
         'secret' => $secret, 
         'cookie' => true, 
        )); 
    
        $session = $facebook->getSession(); 
        $me = null; 
        if ($session) { 
         try { 
          $uid = $facebook->getUser(); 
          $me = $facebook->api('/me'); 
         } catch (FacebookApiException $e) { 
          error_log($e); 
         } 
    
         if($me) { 
    
    
          //In order to post to the page later on we need to generate an Access Token for that page, to do this we get me-accounts in the following api call 
          $accounts = $facebook->api('/me/accounts'); 
    
          //Loop through the array off accounts to find the page with a matching ID to the one we need 
          foreach($accounts['data'] as $account){ 
           if($account['id'] == PAGEID){ 
           $ACCESS_TOKEN = $account['access_token']; 
           } 
          } 
         } 
    
         $message=$data['facebook_text']; 
         $attachment = array(
          'message' => $data['facebook_text'], 
          'name' => $data['name'], 
          'description' => '', 
          'link'=>$someurl, 
          'access_token' => $ACCESS_TOKEN 
         ); 
         if($image_url != NULL) $attachment['picture'] = $image_url; 
    
         try { 
          if($facebook->api('/PAGEID/feed', 'post', $attachment)) 
          { 
           //other stuff 
          } 
         } catch (FacebookApiException $e) { 
          error_log($e); 
          //other stuff 
         } 
        } 
        else 
        { 
         $login_url = $facebook->getLoginUrl(); 
         header("Location: $login_url"); 
         exit; 
        } 
    /* (...) */ 
    ?> 
    

    それは、フォーム内だからソリューションは、どこにもリダイレクトすることはできませんので、すべてが失われdata'll。

  • +0

    ページの管理者はどういう意味ですか? Facebookのページ?彼が別のアカウント(facebookアカウント?)にログインしていて、あなたのコードに彼のfacebookページにリダイレクトされるという指示がない場合でも! 詳細を教えてください...より多くのコードを提供してください – ifaour

    答えて

    0

    私は私はあなたがここで何をしたいのかを理解し、本当にわからないんだけど、これは私が似たような状況で使用するものです:FacebookのPHPのSDKでは

    $session = $this->get_admin_session_of_page ($page_id); 
    $session = unserialize ($session); 
    $facebook->setSession ($session, false); 
    

    手動で設定する方法がありますセッション、setSession私は、管理者のユーザセッションをDBに保存して、シリアル化し、オフラインでアクセスし、ページの権限を管理します。次に、アプリケーションのいくつかの管理者権限が必要な場合は、それをシリアル化してから、setSessionを使用します。 2番目のパラメータはFALSEに設定されているため、このセッションはCookieに保存されず、現在のユーザーをログアウトします。

    この方法では、誰がログインしているかは重要ではなく、作業は常にページの管理者として行われます。私はこれが自動化されたスクリプトで使用するのが安全だと思います。たとえば、ユーザーの写真をページアルバムにアップロードするなどです。 もちろん、もっと複雑になったり、独自のセキュリティを実装したりする場合は、注意して使用する必要があります。

    関連する問題