我只是想让用户在我的 Laravel 应用程序中发帖。如果我的用户必须插入他的用户名密码,它甚至可以,因为我想一次抓取所有帖子媒体和文本,然后他们可以更改密码。
对于我到目前为止尝试过的事情:
1-我在此链接中创建了一个应用程序:
https://developers.facebook.com/apps/
然后我生成一个 User Token
和一个 App Token
之后我调用了这个 api:https://graph.instagram.com/17841405793187218?fields=id,username&access_token=myAppToken
我将我的 App token 放在那个 api 中,但这向我显示了这个错误:{
"error": {
"message": "Access token does not contain a valid app ID",
"type": "OAuthException",
"code": 190,
"fbtrace_id": "Agc0R_wnDwoCzgNuXt2gt1y"
}
}
现在我不知道我是否在正确的火车上,但我只想抓取所有用户的帖子。提前致谢
最佳答案
你应该使用 Laravel Socialite,因为它会简化整个过程。
按照此处的安装说明操作 https://laravel.com/docs/8.x/socialite
不要忘记将 fb 凭据放在您的 config/service.php
中像这样:
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('FACEBOOK_REDIRECT_URL'),
],
现在我们已经设置了 Socialite 与 Facebook 一起工作,我们应该将用户重定向到 Facebook 登录页面,在那里它将输入他的凭据。定义登录路径:
Route::get('facebook', 'FacebookLoginController@redirectToProvider');
定义 Controller 和方法:class FacebookLoginController extends Controller
{
/**
* Redirect the user to the FB authentication page.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function redirectToProvider(RedirectToProviderRequest $request)
{
return Socialite::driver('facebook')->scopes(['instagram_basic'])->asPopup()->usingGraphVersion('v7.0')->redirect();
}
}
一旦用户输入了他的凭据并允许您的应用访问他的数据,我们需要获取访问 token 以代表他调用 fb api。在同一个 Controller 中定义回调路由:
Route::get('facebook/callback','FacebookLoginController@handleProviderCallback');
在 Controller 中定义回调方法: public function handleProviderCallback(Request $request)
{
if ($request->input('error') == "access_denied")
{
return 'user has decline the authorization';
}
$user = Socialite::driver('facebook')->usingGraphVersion('v7.0')->user();
$token = $user->token;
$refreshToken = $user->refreshToken;
$id = $user->getId();
}
从这里开始,您拥有访问 token ( $token
) 来调用 fb api。请注意,用户可以取消授权,因此可能希望在回调中捕获错误。我没有把所有错误处理的东西都放在里面,因为它会使代码复杂化
关于php - 在laravel php中获取用户instagram帖子api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64918868/