使用 Google API in Ruby 将数据插入 Google 电子表格的授权问题
Authorization issue with cron crawler inserting data into Google spreadsheet using Google API in Ruby
我的项目是每天早上 9:00 抓取某些网络数据并将它们放入我的 Google 电子表格中。而且它必须获得读写权限。这就是为什么下面的代码位于顶部。
# Google API
CLIENT_ID = blah blah
CLIENT_SECRET = blah blah
OAUTH_SCOPE = blah blah
REDIRECT_URI = blah blah
# Authorization_code
def get_authorization_code
client = Google::APIClient.new
client.authorization.client_id = CLIENT_ID
client.authorization.client_secret = CLIENT_SECRET
client.authorization.scope = OAUTH_SCOPE
client.authorization.redirect_uri = REDIRECT_URI
uri = client.authorization.authorization_uri
Launchy.open(uri)
# Exchange authorization code for access token
$stdout.write "Enter authorization code: "
client.authorization.code = gets.chomp
client.authorization.fetch_access_token!
client.authorization
end
authorization_code = get_authorization_code
access_token = authorization_code.access_token
session = GoogleDrive.login_with_oauth(access_token)
但是在代码中有了这个,即使我设置了 cron 作业,我也可能必须在早上醒来 Enter authorization code
才能完成它。但是我不想。
请告诉我如何解决这个问题。
感谢 Ruby google_drive gem oAuth2 saving
解决了
我需要获取刷新令牌并让我的代码像下面那样使用它。
CLIENT_ID = '!!!'
CLIENT_SECRET = '!!!'
OAUTH_SCOPE = 'https://www.googleapis.com/auth/drive'
REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob'
REFRESH_TOKEN = '!!!'
client = Google::APIClient.new
client.authorization.client_id = CLIENT_ID
client.authorization.client_secret = CLIENT_SECRET
client.authorization.scope = OAUTH_SCOPE
client.authorization.redirect_uri = REDIRECT_URI
client.authorization.refresh_token = REFRESH_TOKEN
client.authorization.refresh!
access_token = client.authorization.access_token
session = GoogleDrive.login_with_oauth(access_token)
我的项目是每天早上 9:00 抓取某些网络数据并将它们放入我的 Google 电子表格中。而且它必须获得读写权限。这就是为什么下面的代码位于顶部。
# Google API
CLIENT_ID = blah blah
CLIENT_SECRET = blah blah
OAUTH_SCOPE = blah blah
REDIRECT_URI = blah blah
# Authorization_code
def get_authorization_code
client = Google::APIClient.new
client.authorization.client_id = CLIENT_ID
client.authorization.client_secret = CLIENT_SECRET
client.authorization.scope = OAUTH_SCOPE
client.authorization.redirect_uri = REDIRECT_URI
uri = client.authorization.authorization_uri
Launchy.open(uri)
# Exchange authorization code for access token
$stdout.write "Enter authorization code: "
client.authorization.code = gets.chomp
client.authorization.fetch_access_token!
client.authorization
end
authorization_code = get_authorization_code
access_token = authorization_code.access_token
session = GoogleDrive.login_with_oauth(access_token)
但是在代码中有了这个,即使我设置了 cron 作业,我也可能必须在早上醒来 Enter authorization code
才能完成它。但是我不想。
请告诉我如何解决这个问题。
感谢 Ruby google_drive gem oAuth2 saving
解决了我需要获取刷新令牌并让我的代码像下面那样使用它。
CLIENT_ID = '!!!'
CLIENT_SECRET = '!!!'
OAUTH_SCOPE = 'https://www.googleapis.com/auth/drive'
REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob'
REFRESH_TOKEN = '!!!'
client = Google::APIClient.new
client.authorization.client_id = CLIENT_ID
client.authorization.client_secret = CLIENT_SECRET
client.authorization.scope = OAUTH_SCOPE
client.authorization.redirect_uri = REDIRECT_URI
client.authorization.refresh_token = REFRESH_TOKEN
client.authorization.refresh!
access_token = client.authorization.access_token
session = GoogleDrive.login_with_oauth(access_token)