【问题标题】:(PHP) Grabbing AccessToken and feed without permission. (sorta)(PHP) 未经许可获取 AccessToken 和 feed。 (有点)
【发布时间】:2013-01-31 08:36:30
【问题描述】:

我正在创建一个博客,我想为该博客制作一个“FacebookStatusApp”。 它所要做的就是获取我的最新状态并将其请求到我的翻译页面。 我可以获得最新的提要,但问题是访问令牌。 我找到了一种方法来每 9 分钟刷新一次我的 access_token。这是一个名为:

https://mywebcron.com/

此网站将每 X 分钟调用一次您的网址。我选择了 9 分钟。

我的更新代码非常简单:

<?php
$file = file_get_contents("fbat.txt");
$token = $file;

$token_url = "https://graph.facebook.com/oauth/access_token?client_id=100000280644272&client_secret=secret&grant_type=fb_exchange_token&fb_exchange_token=".$token;

$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_URL, $token_url);
$contents = curl_exec($c);
$err  = curl_getinfo($c,CURLINFO_HTTP_CODE);
curl_close($c);

$paramsfb = null;
//parse_str($contents, $paramsfb);
echo $contents;
?>

“Fbat.txt”包含当前的 AccessToken。

但我的帐户需要一个 client_secret。 而且我无法为我的 Facebook 帐户获取 AccessToken:/

所以我的解决方案是使用 MY ClientID 和 HIS ClientSecret 以及“GRAPH EXPLORER”创建一个新应用程序来生成 access_token。

所以我的问题是: 如何获取我的最新状态和我的 access_token。 ?

如果有更好的选择(例如,使用 APP)我也可以这样做。

好吧,我希望你能理解我的问题:P

【问题讨论】:

  • 啊,我将应用程序更改为在graphExplorer中使用,然后生成了一个密钥。这行得通!和再生工程。但是登出时accesstoken会丢失吗?

标签: php facebook feed status access-token


【解决方案1】:

首先,您的供稿需要公开。下面的代码应该完成其余的工作:

function fb_setup(){

    $app_id = 'APP_ID';
    $app_secret = 'APP_SECRET';

    $response = file_get_contents('https://graph.facebook.com/oauth/access_token?type=client_cred&client_id='.$app_id.'&client_secret='.$app_secret);

    $token = str_replace('access_token=', '', $response);

    $node = "PAGE_ID(if not a page just use 'me')";
    $fields = array();
    $fields[] = 'feed';
    $fields[] = 'likes';

    $response = file_get_contents('https://graph.facebook.com/'.$node.'?fields='.implode(',', $fields).'&access_token='.$token.'');

    $arr = json_decode($response);

    $data['node'] = $node;
    $data['arr'] = $arr;

    return $data;

}
function last_post(){

    $ret = fb_setup();
    $arr = $ret['arr'];
    $node = $ret['node'];

    $feed = $arr->feed->data;

    $ret = "";
    $ret .= "<div id='last-fb-post'>";
    $item = $feed[0];

    $message = str_replace("\n","</p><p>",$item->message);
    $likes = (!$item->likes->count) ? '0' : $item->likes->count;
    $coms = $item->comments->count;
    $ex_id = explode('_',$item->id);
    $id = $ex_id[1];

    $href = 'http://www.facebook.com/permalink.php?story_fbid='.$id.'&id='.$node;

    $ret .= '<a class="title" target="_blank" href="'.$href.'">Last Update: <u>' . date("F j, Y",strtotime($item->created_time)) . '</u></a>';
    if($item->type == 'photo'){
        $ret .= '<div class="fb_img"><a target="_blank" href="'.$href.'"><img src="'.$item->picture.'"/></a></div>';
    }
    $ret .= "<p class=\"msg\">";
    $ret .= $message;
    $ret .= "</p>";
    $ret .= "<p class='likes'><a htarget=\"_blank\" href=\"$href\">$likes</p>";



    $ret .= "</div>";

    return $ret;

}

【讨论】:

  • 我明白你做了什么。但是您不能在 httpS:// 链接上使用:file_get_contents。所以我将使用curl。谢谢!
  • 好的 unos 问题。我可能说错了,但我需要“状态”字段,这并不容易:/我已经设法制作了一个有效的字段,但由于某种原因它没有更新。我怎样才能把源代码发给你?顺便说一句:它只不会在虚拟主机上更新。它在我的本地机器上运行
  • 这可能是一个引人注目的问题吗?并且您可以使用带有 https 链接的 file_get_contents,在调用该函数之前尝试ini_set('allow_url_fopen',1);
猜你喜欢
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 2013-11-08
  • 2014-03-20
  • 2016-04-14
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多