我知道有很多关于Facebook访问令及其引起的悲痛的问题,但尽管进行了大量实验并阅读了许多令人沮丧的模糊博客文章(FB等),我仍然在努力为我的需求做出明确的回答.到目前为止,让我简洁地分解我的过程:
而这就是我被困的地方.我的60天密钥适用于我的服务器从页面中提取所需的信息,但据我所知,没有办法以编程方式扩展该60天密钥.我也不知道如何生成新的短期密钥,而无需手动访问Facebook Graph API Explorer并创建一个.
由于我的服务器向Facebook API发出请求而不是基于用户的系统(我可以轻松地请求用户再次授权Facebook应用程序),这会创建一个非常笨重的系统.由于Facebook已offline_access被弃用,是否真的没有永久的方法让我的服务器从我自己的页面提取信息?我是否真的需要手动创建一个新密钥并每60天手动更新一次我的服务器?
还是有什么我想念的?
更新:
之前在此处找到的分步指南已经迁移到自己的答案中.
我有一个Facebook页面,我想从中获取一些东西.第一件事是提要,从我读到的它们是公开的(不需要access_token).但是我也希望得到这些事件......它们不是公开的,需要access_token.
我不希望用户登录Facebook或类似的东西.我只是想从这个唯一的页面推送所有数据.这就是为什么我已经放弃了我在这里找到的许多例子以及https://developers.facebook.com/blog/post/500/上的例子,因为他们希望用户登录或需要一些用户操作我并不感兴趣.
我想要的是我的Facebook应用程序具有完全授权和access_token来推送我拥有的这个Facebook页面(管理员)的数据.这可能吗?我已经尝试了很多东西但似乎没什么用.
我试着点击这个:https://www.facebook.com/dialog/oauth? client_id = 150635421702954 & redirect_uri = http : //MY_URL/& scope = manage_pages & response_type = token & fields = access_token - 将MY_URL更改为我的网站,并请求授权编辑每个我拥有的页面.甚至不是我想要的我点击但没有access_token作为回报...
facebook oauth facebook-page facebook-graph-api access-token
我正在构建一个应用程序,允许用户管理他们的Facebook粉丝页面.这需要以下两个访问令牌:
我对用户访问令牌非常熟悉,但对页面访问令牌却不熟悉.
有人知道页面访问令牌保持有效的时间吗?我在Facebook网站上找到的就是这个简洁的段落,它没有提到任何有关它到期的内容.
我是否可以假设,如果我使用权限请求用户访问令牌,则offline_access页面访问令牌也将无限期地持续(除非用户更改其密码或手动取消授权我的应用程序)?
我问,因为我想知道我应该多久查询一次Facebook Graph API并获取页面访问令牌.我应该在用户注册时简单地请求一次吗?或者,如果他们不断更改,我应该为每个API调用请求一个吗?后者显然更加沉重!
我已经设法通过API(C#)发布到Facebook页面,但是当页面管理员注销时,会发生以下错误:
"(OAuthException - #190)验证访问令牌时出错:会话无效,因为用户已注销."
如何生成永不过期的访问令牌?
我需要一个无法打开Facebook登录对话框的解决方案.
经过几天的搜索论坛/网络,我仍然无法让它消失并使用SCORE图形api
{
"error": {
"message": "(#15) This method must be called with an app access_token.",
"type": "OAuthException",
"code": 15
}
}
Run Code Online (Sandbox Code Playgroud)
在图形api资源管理器上我尝试使用它(激活了publish_actions权限并选择了POST):
https://graph.facebook.com/100003429183160/scores?score=555&access_token=APP_ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
没有运气:(
我做了以下事情:
•将我的应用程序设置为GAME,基本信息,设置Auth Dialog
•设置Open Graph类型,对象,聚合
•通过访问令牌工具使用/验证正确的APP ACCESS_TOKEN(而不是用户access_token)
•使用publish_actions权限
•确保使用POST作为方法
•尝试将appID | appSecret作为app access_token
•确认我确实安装了该应用程序
•能够通过图形api发布到墙上,拉出朋友列表和照片等.
还有什么线索可能导致这不能用Graph API Explorer运行?
Facebook推出了嵌入式帖子(https://developers.facebook.com/docs/plugins/embedded-posts/).但它只允许我在我的网页上嵌入一个特定的帖子.
我想自动将我们公司的Facebook个人资料中的最新facebook帖子嵌入到我们的网页中.那可能吗?
我是Facebook API的新手,但我必须从Facebook页面获取所有照片.我设法得到一个图形api查询,它返回页面上第一个创建的专辑的所有图片,这是专辑图片专辑.例如:
https://graph.facebook.com/227843870675663/photos
Run Code Online (Sandbox Code Playgroud)
但是我需要对页面中的所有其他现有专辑执行相同的操作.任何指针都非常感激.
我Socialite用来通过Facebook验证我的用户.但是,我无法让它发挥作用.我按照本教程,但收到以下错误:
我到处寻找并尝试过任何事情,但我无法让它发挥作用.这是我的代码:
在services.php中:
'facebook' => [
'client_id' => '[My App ID]',
'client_secret' => '[My App Secret]',
'redirect' => 'http://localhost:8000/auth/facebook/callback/',
],
Run Code Online (Sandbox Code Playgroud)
我的路线:
Route::group(['middleware' => ['web', 'requestlog']], function () {
Route::get('auth/facebook', 'Auth\AuthController@redirectToProvider');
Route::get('auth/facebook/callback/', 'Auth\AuthController@handleProviderCallback');
});
Run Code Online (Sandbox Code Playgroud)
然后在我的AuthController中:
use Laravel\Socialite\Facades\Socialite;
public function redirectToProvider()
{
return Socialite::driver('facebook')->redirect();
}
public function handleProviderCallback()
{
try {
$providerUser = Socialite::driver('facebook')->user();
dd('yay it worked!');
} catch (RequestException $e) {
dd($e->getResponse()->json());
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在FB中有这些设置:
出了什么问题?据我所知,我遵循了所有必要的步骤.我不明白这里有什么问题.我希望我提供了所有必要的信息!
编辑
以下是错误显示页面上的url的样子:
http://localhost:8000/auth/facebook/callback?code=AQBtnKEqZgImLqN7f3hETe9GptgzFH71sXrV5qmv8Rpo6Oj5-4rl8mBjFPbfkBtiV8w9atV7X4OrWfHyalJkXU-k6lkEv1bly6v5Qxm2es-_RRp8gfoSWOZwjqE34Rvq6__L3aEOERPEa9LSBk_rKVP_cYGZoQeAydRLQUZVGdr_p1SuE1hRZIvZTAZ-zorkPoyyCDNZtDEVFHGRJt_c3kTf_AKE97FVemrXrUDzxaX-rvovKtfGF3u4CvAIt5pe4g7zD30jAWF78ZgjjPpr21MdaGwP5V0tc8g84oz0dR5Nbit7sKeUE-XblWFrQCIKfqs-OJ6rcuzw7iPTx6xrQ9Ev&state=4f924a9974207482c6fce24c1d74705c6688adc0#_=_
我也尝试过隐身模式,删除cookie等等.结果相同......
我的公司有一个企业Facebook帐户,他们在不同的专辑中发布活动照片.我的要求是从Facebook专辑中获取所有照片并在我们的公司网站上显示.我可以获取照片,但用户访问令牌仅在60天内有效,这意味着每隔两个月我将必须登录公司的公司Facebook帐户,重新生成令牌并更新我的应用程序中的令牌.
有没有办法生成永久访问令牌?或者以任何方式在我的应用程序级别重新生成令牌(没有显示登录对话框)?
有没有其他方法可以在不创建应用程序的情况下获取照片?
我正在开发一个 iOS 应用程序,其中用户需要能够在没有 Facebook 登录的情况下访问 Facebook Graph API(因为他们以仅限电子邮件的方式注册了我的应用程序)。他们主要需要检索其他 Facebook 用户的公共提要(名人等),以便我可以在关于框中显示该信息。在旧的 API 中,我相信这被称为公共帖子搜索或离线访问,但这些似乎已被 Facebook 弃用。我想知道直接使用 app-id 作为令牌是否可行:
如何为没有应用程序或应用程序机密的页面获取 Facebook 访问令牌
取而代之的是,我可以在以下位置使用“客户端令牌”:
https://developers.facebook.com/apps/ {your-app-id}/settings/advanced/
随着:
[FBAccessTokenData createTokenFromString:]
[FBSession openFromAccessTokenData:]
Run Code Online (Sandbox Code Playgroud)
使用我的应用程序凭据将用户登录到 Facebook?另一种选择可能是以编程方式匿名登录用户:
https://developers.facebook.com/products/anonymous-login/
我很难在 FacebookSDK.framework 中找到相应的调用。我能找到的唯一提到的“匿名”是:
[FBSettings setClientToken:]
Run Code Online (Sandbox Code Playgroud)
来自文档:“为 Facebook 应用程序设置客户端令牌。匿名进行某些 API 调用时需要这样做,没有基于用户的会话。”
如果这一切都不可能,那么我可能需要回退到使用 node.js 服务器从应用程序令牌为用户生成长期存在的令牌。这在“从服务器端长寿命令牌生成长寿命用户令牌”部分中讨论:
https://developers.facebook.com/docs/facebook-login/access-tokens
我看到如何在这里获得令牌:
https://developers.facebook.com/tools/access_token/
https://developers.facebook.com/tools/explorer/?method=GET&path=me%3Ffields%3Did%2Cname&version=v2.2
然后使用 node.js 以某种方式扩展它并将其传递给客户端:
或者通过使用 app_id|app_secret 代替令牌来完全跳过获取令牌:
但尚不清楚如何将其从 node.js 传递回客户端。我对所有这些感到非常困惑,不明白为什么没有更好地记录使用图形 API 访问公共数据。我有在 iOS 中工作的普通用户登录,如果我能找到一个匿名登录示例,我可以改编一个来自网络的匿名登录示例。任何例子将不胜感激。
更新:
这些说明和这些文档帮助我从可用于 Facebook API 访问的应用程序 ID 创建了一个长期存在的令牌。目前这是通过像 php 这样的后端服务器完成的,但可能可以通过 URL 请求使其适应 …