0

適切な access_tokens を見つけるのに苦労しています。私はGoogleとdevelopers.fbで見つけたすべての方法を試しましたが、このアプリケーションでは(以前にそれを行い、別のアプリで機能させました)、成功していないようです.

FB は常に API を更新していることを認識しているので、時代遅れのソリューションを見つけただけかもしれません。

アクセス トークンには、ユーザー アクセス トークンとページ アクセス トークンのさまざまな種類があるようです。Facebookのドキュメントでいくつかの回答を見つけましたが、理解できるものはありません。

私が作成しようとしているアプリは、誕生日のリマインダーに似たものなので、オフライン メッセージを送信できる必要があります (fex. cron ジョブによって実行され、私が所有する 1 つの fb ページに投稿するだけです)。 、アプリ自体の名前のみ)

このアドレスのページ タブにアプリを登録しました: -- https://www.facebook.com/dialog/pagetab?app_id=MY_APP'S_ID&display=popup&next=MY_URL-- これで、Facebook ページの設定から見つけることができます。

次に、アクセストークンが必要な部分に到達します。どの URL がどの種類のアクセス トークンを提供するのかがわからないため、両方を試しました。

私はこの URL にアクセスしました: (すべてのリンクを複製し、チュートリアルからの回答を書き、リンクを書き直しました) (もちろん、セキュリティ上の理由から、アプリと Web ページを指すすべてのコードは置き換えられます)

-- https://www.facebook.com/dialog/oauth?client_id=0123456789011121&redirect_uri=http://www.example.com&scope=read_stream,publish_stream,offline_access--

-- https://www.facebook.com/dialog/oauth?client_id=MY_APP_ID&redirect_uri=MY_REDIRECT_URL&scope=read_stream,publish_stream,offline_access--

そして得た:

http://www.example.com/?code=XXXXX1x1X1xxXxxX1xXxXxX1X111xX11XXXXX1XXXXXxX_XxXxxXxX1xxxXx1xXxXx-x1XxXXXxXXx1xXxXXXxXl1xX-111xXxxxXxxx1xXxxx1xXx1X1X1Xx-xxxXXXxXXXX1XXXXxx1Xxx1_xXxXxxxXx1x1XxXxxXx1XXxX-x1x1xxxXXxXxX1XX1XX1x1-xxXxxxx1Xx1XxXXXxxX#_=_

言い換えれば(私が信じているように)、コードを取得しました:

XXXXX1x1X1xxXxxX1xXxXxX1X111xX11XXXXX1XXXXXxX_XxXxxXxX1xxxXx1xXxXx-x1XxXXXxXXx1xXxXXXxXl1xX-111xXxxxXxxx1xXxxx1xXx1X1X1Xx-xxxXXXxXXXX1XXXXxx1Xxx1_xXxXxxxXx1x1XxXxxXx1XXxX-x1x1xxxXXxXxX1XX1XX1x1-xxXxxxx1Xx1XxXXXxxX#_=_

Google で見つけたように、別のコードも取得する必要があるようです。そのため、この URL にアクセスしました (もちろん、最初に取得した最初のコードを試しました)。

https://graph.facebook.com/oauth/access_token?client_id=0123456789011121&redirect_uri=http://www.example.com&client_secret=1x1111xx11111xXXx11x111111111x11&code=XXXXX1x1X1xxXxxX1xXxXxX1X111xX11XXXXX1XXXXXxX_XxXxxXxX1xxxXx1xXxXx-x1XxXXXxXXx1xXxXXXxXl1xX-111xXxxxXxxx1xXxxx1xXx1X1X1Xx-xxxXXXxXXXX1XXXXxx1Xxx1_xXxXxxxXx1x1XxXxxXx1XXxX-x1x1xxxXXxXxX1XX1XX1x1-xxXxxxx1Xx1XxXXXxxX#_=_

-- https://graph.facebook.com/oauth/access_token?client_id=MY_APP_ID&redirect_uri=MY_REDIRECT_URL&client_secret=MY_APP_SECRET&code=THE_CODE_I_GOT_FROM_THE_PREVIOUS_RUN--

しかし、アプリを実行しようとすると、次のエラー メッセージが表示されます: 結果:{"error":{"message":"Malformed access token XXXXX1x1X1xxXxxX1xXxXxX1X111xX11XXXXX1XXXXXxX_XxXxxXxX1xxxXx1xXxXx-x1XxXXXxXXx1xXxXXXxXl1xX-111xXxxxXxxx1xXxxx1xXx1X1X1Xx-xxxXXXxXXXX1XXXXxx1Xxx1_xXxXxxxXx1x1XxXxxXx1XXxX-x1x1xxxXXxXxX1XX1XX1x1-xxXxxxx1Xx1XxXXXxxX#_=_","type":"OAuthException","code":190}}

アクセス トークン (# = )のさまざまな種類の末尾を試してみました。これは、先週取得した他の動作中のアクセス トークンから、構築した完全に動作するアプリまで認識できないためです。私が覚えているように、それにはその結末がありませんでした。

興味があれば、スクリプトもここに投稿します。チュートリアルで見つけましたが、非常に単純なコードです。

<?php
    // CURL function to send with post method
    function send_post_curl($url, $postdata = “”) {
    $ch = curl_init($url);
    curl_setopt ($ch, CURLOPT_POST, 1);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    $data = curl_exec ($ch);
    curl_close ($ch);
    return $data;
    }
    // setup the message
    $fburl = 'https://graph.facebook.com/THE_FB_PAGE_ID/feed';
    $fbtoken = 'THE_ACCESS_TOKEN';
    $fbmsg = 'Great API to auto status, this is the message.
    Thank to WebDDR
    http://webddr.net/tips-and-tricks/facebook-offline-access-step-by-step-explanation/';
    $fbpcurl = 'access_token='. $fbtoken;
    $fbpcurl .= '&message='. str_replace('&', 'and', urlencode($fbmsg)) ;
    $result = send_post_curl($fburl, $fbpcurl);
    echo 'Result: '. $result;
?> 

誰かが私を助けてくれることを心から願っています。私は大学での教育のために選択した仕事としてこれをやっています。/ヨハンPS。申し訳ありませんが、リンクについて議論する必要がありました --link-- フォーラムがスパム Ds と判断したためです。

4

1 に答える 1

0

このコードを試してください:

<?php
session_start();   
$facebook_appid         = "facebook_appid";                                 // Facebook appplication id
$facebook_secret        = "facebook_secret";                // Facebook secret id
$redirect_uri           = "https://localhost/facebook_page/events.php";   // return url to our application after facebook login ## should be SAME as in facebook application
$scope                  = "user_photos,email,user_birthday,user_online_presence,offline_access,manage_pages,publish_stream,user_events,friends_events"; // User permission for facebook

$code                   = $_REQUEST["code"]?$_REQUEST["code"]:"";

if(empty($code)) {
    $_SESSION['state']  = time(); // CSRF protection
    $dialog_url         = "https://www.facebook.com/dialog/oauth?client_id=". $facebook_appid . "&redirect_uri=" . urlencode($redirect_uri) . "&state=". $_SESSION['state'] . "&scope=".$scope;
    header("location:".$dialog_url);
}

if($_SESSION['state'] && ($_SESSION['state'] == $_REQUEST['state'])) {
    $token_url          = "https://graph.facebook.com/oauth/access_token?". "client_id=" . $facebook_appid . "&redirect_uri=" . urlencode($redirect_uri). "&client_secret=" . $facebook_secret . "&code=" . $code;
    $response           = @file_get_contents($token_url);

    $params             = null;
    parse_str($response, $params);


    echo $params['access_token'];
    echo "<br>";

    //$offer_url        = "https://graph.facebook.com/".$dt->id."/conversations?access_token=".$dt->access_token;
    //$off              = @file_get_contents($offer_url);
    //$dto              = json_decode($off);

    //echo "<pre>";
    //print_r($dto);


}

?>
于 2013-01-25T09:54:30.047 に答える