получение API для постов пользователей Instagram в laravel php

#php #laravel #instagram

#php #laravel #Instagram

Вопрос:

я просто хочу получать сообщения пользователей в моем приложении laravel. это даже хорошо, если мой пользователь должен ввести свой пароль от имени пользователя, потому что я хочу один раз просмотреть все сообщения и текст, а затем они могут сменить пароль. что касается того, что я пробовал до сих пор: 1-я создал приложение по этой ссылке :

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

затем я генерирую User Token и App Token после этого я вызвал этот api :

 https://graph.instagram.com/17841405793187218?fields=id,usernameamp;access_token=myAppToken
 

я поместил свой токен приложения в этот api, но это показало мне эту ошибку :

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

теперь я не знаю, даже если я на правильном пути или нет, но просто я хочу сканировать все сообщения пользователей. заранее спасибо

Комментарии:

1. «Токен доступа не содержит действительного идентификатора приложения» кажется довольно понятным. Похоже, вы что-то неправильно настроили на стороне сервера.

2. вы можете попробовать Laravel Socialite (композитору требуется laravel / socialite)

3. Вы следовали инструкциям по developers.facebook.com/docs/instagram-basic-display-api/guides /… чтобы получить an access_token для вашего пользователя?

Ответ №1:

Вам следует использовать Laravel Socialite, поскольку это упростит весь процесс.
Следуйте инструкциям по установке здесь https://laravel.com/docs/8.x/socialite Не забудьте указать учетные данные fb в своем config/service.php like so:

  '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 SymfonyComponentHttpFoundationRedirectResponse
     */
    public function redirectToProvider(RedirectToProviderRequest $request)
    {
        return Socialite::driver('facebook')->scopes(['instagram_basic'])->asPopup()->usingGraphVersion('v7.0')->redirect();
    }
}
 

После того, как пользователь ввел свои учетные данные и разрешил вашему приложению доступ к его данным, нам нужно получить токен доступа, чтобы совершать вызовы api fb от его имени.
Определите маршрут обратного вызова в том же контроллере:

 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 ) для вызова api fb.

Пожалуйста, обратите внимание, что пользователь может отменить авторизацию, поэтому, вероятно, захочет перехватить ошибку при обратном вызове. Я не включил все функции обработки ошибок, поскольку это может усложнить код

Комментарии:

1. я скоро проверю это и сообщу вам ответ, только одно: пользователь Instagram проходит, а координаты facebook совпадают, потому что я хочу получать сообщения пользователей в Instagram, а вы в ответ указали учетную запись facebook, которая меня немного смутила, и спасибо за ответ

2. Да, вы правы. Facebook объединил api instagram в graph. Вы должны пройти через facebook, чтобы получить сообщение в Instagram. developers.facebook.com/docs/instagram-api

Ответ №2:

Глядя на документацию, я думаю, что секрет приложения следует использовать для генерации токена доступа, пожалуйста, ознакомьтесь с этим шагом: Шаг 5: Обмен кода на токен в документации: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started