0

Facebookログインを使用するときにアクセストークンを使用してFacebookウォールに投稿したいのですが、他のユーザーが使用すると機能しません。

投稿するには、自分のアカウントを使用し、Facebook ウォールへのアクセス トークン投稿を使用してアクセス トークンを取得した後、ユーザーにログインを許可します。

他のユーザーのログインでは機能しません。助けてください。

コード

$facebook = new Facebook(array(
                           'appId'  => $conf->get("FACEBOOK_API_ID"),
                           'secret' => $conf->get("FACEBOOK_SECRET_ID"))
                        );
$user = $facebook->getUser();
$params = array(
            'description'  => $campaign['message'],
            'message'      => $campaign['message'],
            'picture'      => $campaign['image_path'],
            'created_time' => strtotime($campaign['post_datetime']));
$facebook->setAccessToken($campaign['access_token']);
$uid = $facebook->getUser();
$facebook->api("/$user/feed", "POST", $params);

アプリ ID/API キーとアプリ シークレットを使用して、ユーザーのウォールに投稿したいと考えています。ユーザーのウォールに投稿するには、ユーザーがログインするログイン ボックスがあり、このアクセス トークンを使用してアクセス トークンを取得し、特定の時間に投稿します。cron を使用して、そのアクセス トークンを使用してユーザーのウォールに投稿しています。

ユーザーのアクセス トークンを取得するために、アプリ ID/API キーとアプリ シークレットを使用していることの 1 つです。

アクセス トークンを取得しましたが、このアクセス トークンを取得した後、投稿したいのですが、cron の URL にアクセスすると、Fatal error: Uncaught OAuthException: (#200) The user has not Authorized the application to perform this action というエラーが表示されます/home/xyz/public_html/xyyy/plugin/facebook/base_facebook.php の 1271 行目にスローされます

助けてください、どうすれば投稿できますか?

$facebook = new Facebook(array(
    'appId'  => Config::get('FACEBOOK_API_ID'),
    'secret' => Config::get('FACEBOOK_SECRET_ID'),                                'scope'=>'create_note,manage_pages,photo_upload,publish_actions,publish_stream,share_item,status_update,video_upload'
    ));
    $user_id = $facebook->getUser();
    if($user_id) {
    try {
        $accessToken = $facebook->getAccessToken();
        $url = 'https://graph.facebook.com/oauth/access_token?client_id='.Config::get('FACEBOOK_API_ID').'&client_secret='.Config::get('FACEBOOK_SECRET_ID').'&grant_type=fb_exchange_token&fb_exchange_token='.$accessToken;
        $ch = curl_init();  
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
        $response = curl_exec($ch); 
        curl_close($ch);

        parse_str($response, $token_data);

        $access_token = $token_data['access_token'];
4

0 に答える 0