-1

私は自分のサイトへのFacebookログインを統合しようとしています、私が得ているエラーは次のとおりです:

array_merge() [function.array-merge]: Argument #2 is not an array
Filename: fb/base_facebook.php

Line Number: 529

コントローラで使用しているコードは次のとおりです。

$this->load->library('fb');
$data = array
    (
        'redirect_uri'=>site_url('main/handle_facebook_login'),
        'scope'=>'email'

    );

$this->fb->sdk->getLoginUrl('$data');

getLoginUrlは、免税をスローする場所です

fbライブラリのコードは次のとおりです。

class Fb {

private $appid = '';
private $secret = '';

public function __construct()
{
  $ci =& get_instance();
  $ci->config->load('fb');
  $this->appid = $ci->config->item('fb_appid');
  $this->secret = $ci->config->item('fb_secret');

  //load the library
  $this->load();
}

private function load()
{
  include_once 'fb/facebook.php';
  $credentials = array(
     'appId' => $this->appid,
     'secret' => $this->secret
  );

  $this->sdk = new Facebook($credentials);
}      

}

そして私がそれを渡しているbase_facebookのコードは次のとおりです:

 /**
* Get a Login URL for use with redirects. By default, full page redirect is
* assumed. If you are using the generated URL with a window.open() call in
* JavaScript, you can pass in display=popup as part of the $params.
*
* The parameters:
* - redirect_uri: the url to go to after a successful login
* - scope: comma separated list of requested extended perms
*
* @param array $params Provide custom parameters
* @return string The URL for the login flow
*/
public function getLoginUrl($params=array()) {
$this->establishCSRFTokenState();
$currentUrl = $this->getCurrentUrl();

// if 'scope' is passed as an array, convert to comma separated list
$scopeParams = isset($params['scope']) ? $params['scope'] : null;
if ($scopeParams && is_array($scopeParams)) {
  $params['scope'] = implode(',', $scopeParams);
}

return $this->getUrl(
  'www',
  'dialog/oauth',
  array_merge(array(
                'client_id' => $this->getAppId(),
                'redirect_uri' => $currentUrl, // possibly overwritten
                'state' => $this->state),
              $params));
}

私は間違っていることを理解していません、私は配列を渡していますが、それは私がそうではないと言っていますか?誰か助けてもらえますか?

4

1 に答える 1

1

実際には、文字列 '$data' (一重引用符を参照) を渡しています。

次のようにする必要があります。

$this->fb->sdk->getLoginUrl($data);
于 2013-01-06T20:37:17.123 に答える