错误 -Google::Apis::ClientError: insufficientPermissions: Request had insufficient authentication scopes.
面临错误 -result = service.list_user_labels user_id
在dashboards_controller.rb中的一行
以下是我的文件。
设计.rb
config.omniauth :google_oauth2, client_id, client_secret
用户/omniauth_callbacks_controller.rb
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def google_oauth2
#create user
if user.present?
flash[:success] = t 'devise.omniauth_callbacks.success', kind: 'Google'
sign_in_and_redirect user, event: :authentication
else
flash[:alert] = t 'devise.omniauth_callbacks.failure', kind: 'Google', reason: "#{auth.info.email} is not authorized."
redirect_to new_user_session_path
end
end
end
仪表板_控制器.rb
require 'google/api_client/client_secrets.rb'
require 'google/apis/gmail_v1'
require 'googleauth'
class DashboardsController < ApplicationController
def show
# Initialize the API
service = Google::Apis::GmailV1::GmailService.new
service.authorization = google_secret.to_authorization
service.authorization.refresh!
# Show the user's labels
user_id = current_user.uid
result = service.list_user_labels user_id
puts "Labels:"
#puts "No labels found" if result.labels.empty?
#result.labels.each { |label| puts "- #{label.name}" }
end
private
def google_secret
scope = "https://www.googleapis.com/auth/gmail.labels"
Google::APIClient::ClientSecrets.new(
{ "web" =>
{ "access_token" => current_user.token,
"refresh_token" => current_user.refresh_token,
"client_id" => client_id,
"client_secret" => client_secret,
"scope" => scope
}
}
)
end
end