Failed to Authenticate Blogger Rest Api from laravel Controller

35 Views Asked by At
    $data = [
        'kind' => 'blogger#post',
        'blog' => [
            'id' => $bloggerId,
        ],
        'title' => $title,
        'content' => $content,
        // Add other parameters as needed
    ];

    $client = new Client();
    $url = "https://www.googleapis.com/blogger/v3/blogs/{$bloggerId}/posts/";

    try {
        $response = $client->get($url);
        $data = json_decode($response->getBody(), true);

        return response()->json(['success' => true, 'data' => $data]);
    } catch (\Exception $e) {
        return response()->json(['success' => false, 'error' => $e->getMessage()]);
    }

I have tried to post in blogger from laravel controller but failed to authenticate to publish post blogger from laravel controller via rest api

1

There are 1 best solutions below

0
Imran Ahmed On

I have solved this via consent page another route to collect user token by these controller:

public function redirectToBlogger()
{
    $clientId = env('BLOGGER_CLIENT_ID');
    $redirectUri = env('BLOGGER_REDIRECT_URI');
    
    return redirect("https://accounts.google.com/o/oauth2/auth?client_id={$clientId}&redirect_uri={$redirectUri}&scope=https://www.googleapis.com/auth/blogger&response_type=code");
}

public function handleBloggerCallback(Request $request)
{
    $code = $request->query('code');
    $clientId = env('BLOGGER_CLIENT_ID');
    $clientSecret = env('BLOGGER_CLIENT_SECRET');
    $redirectUri = env('BLOGGER_REDIRECT_URI');
    $client = new Client();
    
    try {
        $response = $client->post('https://accounts.google.com/o/oauth2/token', [
            'form_params' => [
                'code' => $code,
                'client_id' => $clientId,
                'client_secret' => $clientSecret,
                'redirect_uri' => $redirectUri,
                'grant_type' => 'authorization_code',
            ],
        ]);

        $data = json_decode($response->getBody(), true);

        $user = auth()->user(); 
        if ($user) {
            $user->blogger_access_token = $data['access_token'];
            $user->save();
        } else {
            return "user is not authenticated";
            return redirect()->route('login')->with('error', 'Authentication required.');
        }
        $notify[] = ['success', 'Your Permission Accepted successfully, Provide Your Blogger Details To Publish Article'];
        return redirect()->route('user.blogger.addDomain')->withNotify($notify);
    } catch (\Exception $e) {
        $notify[] = ['success', 'We are Failed to get Your Permission Access in Blogger.'];
        return redirect()->back()->withNotify($notify);
    }
}