【问题标题】:getting the users instagram posts api in laravel php在 laravel php 中获取用户 instagram 发布 api
【发布时间】:2020-11-19 19:41:33
【问题描述】:

我只是想让用户在我的 laravel 应用程序中发帖。如果我的用户必须插入他的用户名密码,那就更好了,因为我想一次抓取所有帖子媒体和文本,然后他们可以更改密码。 关于我迄今为止尝试过的事情: 1-我在此链接中创建了一个应用程序:

https://developers.facebook.com/apps/

然后我生成一个User Token 和一个App Token 之后我调用了这个api:

https://graph.instagram.com/17841405793187218?fields=id,username&access_token=myAppToken

我将我的 App 令牌放在那个 api 中,但这向我显示了这个错误:

{
    "error": {
        "message": "Access token does not contain a valid app ID",
        "type": "OAuthException",
        "code": 190,
        "fbtrace_id": "Agc0R_wnDwoCzgNuXt2gt1y"
    }
}

现在我不知道我是否在正确的火车上,但我只是想抓取所有用户的帖子。提前致谢

【问题讨论】:

标签: php laravel instagram


【解决方案1】:

你应该使用 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');

定义控制器和方法:

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();
    }
}

一旦用户输入了他的凭据并允许您的应用访问他的数据,我们需要获取访问令牌以代表他调用 fb api。
在同一个控制器中定义回调路由:

Route::get('facebook/callback','FacebookLoginController@handleProviderCallback');

在控制器中定义回调方法:

 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) 来调用 fb api。

请注意,用户可以取消授权,因此可能希望在回调中捕获错误。我没有放所有错误处理的东西,因为它会使代码复杂化

【讨论】:

  • 我会尽快检查并让您知道答案,只有一件事是 instagram 用户通过和 facebook 坐标是相同的,因为我想获取用户的 instagram 帖子,而您回答说 facebook让我有点困惑,谢谢你的回答
  • 是的,你说得对。 Facebook 已将 instagram api 合并到图形中。您必须通过 facebook 才能获得 instagram 帖子。 developers.facebook.com/docs/instagram-api
【解决方案2】:

查看文档,我认为应该使用 app secret 来生成访问令牌,请查看此步骤:Step 5: Exchange the Code for a Token 文档: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多