0
Ich versuche, die gmail api für das zuzugreifen ich diesen rubygmail Führung verwende aber jedes Mal wenn ich versuche, den Code erhalte ich unterschiedliche Fehler laufen Ich verwende diesen Code:Wie gmail api mit Ruby zugreifen?
require 'google/apis/gmail_v1'
require 'googleauth'
require 'googleauth/stores/file_token_store'
require 'fileutils'
OOB_URI = 'urn:ietf:wg:oauth:2.0:oob'
APPLICATION_NAME = 'Gmail API Ruby Quickstart'
CLIENT_SECRETS_PATH = 'client_secret.json'
CREDENTIALS_PATH = File.join(Dir.home, '.credentials',
"gmail-ruby-quickstart.yaml")
SCOPE = Google::Apis::GmailV1::AUTH_GMAIL_READONLY
##
# Ensure valid credentials, either by restoring from the saved credentials
# files or intitiating an OAuth2 authorization. If authorization is required,
# the user's default browser will be launched to approve the request.
#
# @return [Google::Auth::UserRefreshCredentials] OAuth2 credentials
def authorize
FileUtils.mkdir_p(File.dirname(CREDENTIALS_PATH))
client_id = Google::Auth::ClientId.from_file(CLIENT_SECRETS_PATH)
token_store = Google::Auth::Stores::FileTokenStore.new(:file => 'gmail-ruby-quickstart.yaml')
authorizer = Google::Auth::UserAuthorizer.new(
client_id, SCOPE, token_store)
user_id = 'me'
credentials = authorizer.get_credentials(user_id)
if credentials.nil?
url = authorizer.get_authorization_url(
base_url: OOB_URI)
puts "Open the following URL in the browser and enter the " +
"resulting code after authorization"
puts url
code = gets
credentials = authorizer.get_and_store_credentials_from_code(
user_id: user_id, code: code, base_url: OOB_URI)
end
credentials
end
# Initialize the API
service = Google::Apis::GmailV1::GmailService.new
service.client_options.application_name = APPLICATION_NAME
service.authorization = authorize
# Show the user's labels
user_id = 'me'
result = service.list_user_labels(user_id)
puts "Labels:"
puts "No labels found" if result.labels.empty?
result.labels.each { |label| puts "- #{label.name}" }
Wenn bei mir läuft die ruby-Code erhalte ich diese Fehlermeldung:
[email protected]:~/gmail$ ruby quickstart.rb
/home/nilay/.rbenv/versions/2.3.1/lib/ruby/2.3.0/pstore.rb:414:in `load_data': PStore file seems to be corrupted. (PStore::Error)
from /home/nilay/.rbenv/versions/2.3.1/lib/ruby/2.3.0/pstore.rb:328:in `transaction'
from /home/nilay/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/googleauth-0.5.1/lib/googleauth/stores/file_token_store.rb:49:in `load'
from /home/nilay/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/googleauth-0.5.1/lib/googleauth/user_authorizer.rb:130:in `get_credentials'
from quickstart.rb:28:in `authorize'
from quickstart.rb:45:in `<main>'
Wie kann ich dieses Problem beheben mir bitte helfen.
Die drei Linien, die Sie keinen Fehler dar geschrieben haben. Sie haben einen Teil der Ablaufverfolgung veröffentlicht, aber die eigentliche Fehlermeldung abgeschnitten. – MarsAtomic
Jetzt habe ich ganzen Fehler hinzugefügt –
Sie können versuchen, die Lösung in diesem [thread] (http://docs.ruby-lang.org/en/2.2.0/PStore.html) zu folgen, Standardmäßig ist die Dateiintegrität Dies ist nur gewährleistet, solange das Betriebssystem keine unerwarteten E/A-Fehler verursacht. Wenn ein E/A-Fehler auftritt, während ** PStore ** in seine Datei schreibt, wird die Datei beschädigt. Sie können dies verhindern, indem Sie 'pstore.ultra_safe = true' setzen. Hinweis: Wenn Sie wertvolle Daten mit ** PStore ** speichern, sollten Sie die ** PStore ** -Dateien von Zeit zu Zeit sichern. Überprüfen Sie diesen Link für mehr [info] (https://github.com/sj26/ruby-1.9.3-p0/blob/master/lib/pstore.rb) – KENdi