0

私はこの質問をたくさん検索しましたが、この質問に対する特定の解決策は見つかりませんでした.多くの例といわゆる解決策を見てきましたが、どれもうまくいきませんでした. その上で、phpacademy のビデオを見て、ビデオとまったく同じように入力しています。

誰かがこれを重複としてマークする前に、私の唯一の質問は

これは、ローカル マシンでこれをテストしているためですか? 私の設定とビデオの唯一の違いは、チュートリアルがライブでホストされており、ローカル マシンでこれをテストしていることです。

この場合、ローカル マシンで PHP facebook SDK をテストするにはどうすればよいですか?

これが私の完全なコードです。これは私のメインコントローラーです

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Fbapp extends MX_Controller {


    function __construct() {
        $this->load->library('fbconnect');
        parent::__construct();
    }
    function index() {


        echo "<a href='" . base_url() . "fbapp/gotofb'>Go To Facebook</a>";
    }

    function gotofb(){

        $data = array(
            'redirect_uri' => base_url() . "fbapp/redirected",
            'scope' => "email,photo_upload"
        );
      $url =  $this->fbconnect->getLoginUrl($data);

     redirect($url);
    }

    function redirected(){
        $user_id= $this->fbconnect->getUser();
       echo $user_id;

    }
}

これは、「fbconnect.php」という名前のライブラリ ファイルで、ライブラリ内に sdk ファイルが含まれ、ライブラリに含まれています。config 内に facebook.php を作成しました。これは、appId とシークレットを $config として保存します。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');


require_once(APPPATH . 'libraries/facebook/src/facebook.php');
class Fbconnect extends Facebook{

    public $user = null;

    function __construct() {
        $ci =& get_instance();

        $ci->load->config("facebook", true);
        $config = $ci->config->item('facebook');

        parent::__construct($config);
    }

}

手順: 1.自分の URL にアクセスします。リンクをクリックします。2.Facebookのログインページに行きます。ログインします。3. リダイレクト uri にリダイレクトされ、0 が出力されます。

注: 私は codeigniter で開発しています。前もって感謝します。どんな助けでも大歓迎です!!

4

3 に答える 3

0

ローカル マシン用にある種のテスト環境を作成してみることができます。

Facebook がアプリケーションにデータを送信する方法を理解する必要があります。その後、環境を作成できます。

  1. Facebook は (POST 経由で) ページにリクエストを送信し、ページはこのデータを受信して​​おり、データを受け入れて処理する必要があります。

  2. オンラインアプリケーションを 1 つ作成してみて (私は PHP を使用しているので、そのように記述します)、var_dump 署名付きリクエストを作成します。

  3. var_dump の後、Facebook から送信された署名済みのリクエストを確認できます。

  4. ローカルアプリケーションを配置できる入力フィールドと、入力されたページにデータを POST するボタンを含む PHP ファイルを作成します。フォームには、ステップ 2 のデータを含む「signed_request」という名前の非表示の入力があります。

  5. ページにデータを送信すると、ページはオンラインで行う必要があるように、署名されたリクエストを処理します。

これを作成するのは長いプロセスであることは承知していますが、一度作成すると、将来の他のすべてのアプリケーションのテスト環境が整います。

また、いくつかのケースでいくつかのフォームを作成してみてください。

  1. Facebookページのタブが気に入らない
  2. Facebookページのタブが気に入りました
  3. 承認済みの許可ボックスがある Facebook ページ タブ
  4. 等...
于 2013-03-12T23:33:48.567 に答える
0

こんにちは @developernaren ライブラリで次のコードを使用してみてください。

<?php
    if (!defined('BASEPATH')) exit('No direct script access allowed');

include(APPPATH.'libraries/facebook/src/facebook.php');

class Fb_connect extends Facebook {

    //declare protected variables
    protected $user     = NULL;
    protected $user_id  = FALSE;
            protected $friends      = NULL;

            //constructor method.
    public function __construct()
    {
                $CI = & get_instance();
                $CI->config->load("facebook",TRUE);
                $config = $CI->config->item('facebook');
                parent::__construct($config);
                $this->user_id = $this->getUser();
                if ($this->user_id) {
                    log_message('Info','Userid is fetched!');
                    try {
                        $this->user = $this->api('/me');
                        $this->friends = $this->api('/me/friends');
                    } catch (FacebookApiException $e) {
                        error_log($e);
                    }
                }
    }
            //Use this function to fetch the fb_uid. Function call: $this->fb_connect->user_id();
            public function user_id()
            {
                if(!empty($this->user_id))
                    return $this->user_id;
                else
                    return FALSE;
            }
          //Use this function to fetch the user details from fb. Function call: $this->fb_connect->user();
            public function user()
            {
                if(!empty($this->user))
                    return $this->user;
                else
                    return NULL;
            }}
于 2013-03-12T07:25:39.500 に答える
0

私は前に同じ問題を抱えていました.数日後に検索した後、すべての構成について確信がある場合は2つの方法で解決しました...試してみるには解決策が必要だと思います.1-アプリケーションをWebホスティングサーバーでホストし、ドメインで試してくださいあなたの意志が得られます。2- 次のように、javascript sdk を使用して access_token を取得し、それを php skd に渡します。

              window.fbAsyncInit = function() {
            FB.init({
              appId      : 'appId', // App ID
              channelUrl : 'channel.html', // Channel File
              status     : true, // check login status
              cookie     : true, // enable cookies to allow the server to access the session
              xfbml      : true  // parse XFBML
            });
            // Additional init code here

            FB.Event.subscribe('auth.login', function(response) {
            var accessToken = response.authResponse.accessToken;
            window.location.href = "http://page_to_read_process_the _request?"accessToken="+accessToken;
         });

PHPでは、次のようにするだけです:

$facebook->setAccessToken($accessToken);
$facebook->getUser();

これで問題が解決した場合: 投票することを忘れないでください:D

于 2013-03-12T08:25:47.597 に答える