2014-05-26 5 views
1

Я пытался использовать oauth2 создать службу настройки группы со следующим:Как предоставить permantly-доступ с OAuth2

def groupSettingsService(request): 
    CLIENT_SECRETS = os.path.join(os.path.dirname(__file__), 'client_secrets.json') 
    FLOW = client.flow_from_clientsecrets(CLIENT_SECRETS, scope=['https://www.googleapis.com/auth/apps.groups.settings'], message=tools.message_if_missing(CLIENT_SECRETS)) 
    storage = Storage('groups-settings.dat') 
    credentials = storage.get() 
    if credentials is None or credentials.invalid: 
     credentials = run(FLOW, storage) 
    http = httplib2.Http() 
    http = credentials.authorize(http) 
    return discovery.build('groupssettings', 'v1', http=http) 

Но проблема в том, когда маркер не действителен (истекает), то перенаправление на страницу, чтобы сообщить пользователю снова предоставить доступ к этой области ... вещи, которые не подходят для вызовов API!

Есть ли способ работать с именем пользователя/паролем или client_secret, чтобы предоставить полный доступ к API без запроса доступа или нет?

ответ

1

Чтобы перенаправить пользователя в Google, необходимо указать access_type = offline.

Вы получите код, который можно обменять (путем POSTing с помощью client_id и client_secret) в access_token (то есть тот, который вы уже используете) и refresh_token.

Когда истечет срок действия вашего доступа, вы можете отправить сообщение refresh_token, client_id и client_secret, чтобы получить еще один access_token. Вы можете сделать это несколько раз, если вам нужно (или через несколько недель ...)

+0

Да, вы правы, но здесь мы должны предоставить доступ в первый раз с помощью гуманного действия ... как насчет вызова API из приложения, чтобы аннулировать доступ, не прося предоставить какой-либо доступ любому пользователю? Я администратор домена Я разрабатываю приложение, которое меняет groupsSettings déponds времени. Поэтому он должен делать это сам, не предоставляя доступ даже в первый раз. Любая идея? – Drwhite

+0

Если ваша заявка находится в приложении Google Apps Marktplace (или вы найдете другой способ предоставления доступа к учетной записи службы), вы должны иметь возможность использовать учетную запись службы для выхода в автономный режим. Запросите access_token для своей учетной записи службы (и укажите адрес электронной почты адрес как под). Я только читал это, но никогда не делал этого сам. –

+0

Возможно, ответ на этот вопрос поможет http://stackoverflow.com/questions/20668643/google-apps-marketplace-sdk-domain-wide-oauth-2-sso –

0

Вы сохранили учетные данные для хранения при успешном получении учетных данных?

+0

Да, я сохраняю их в файле под названием «groups-settings.dat», и я получаю и работаю с ними. Но проблема, когда я пытаюсь проверить их снова через 1 или 2 дня, забирает меня на страницу доступа к гранту, и файл здесь с учетными данными. Думаю, похоже, что они не будут действительны, что-то связанное с истечением, я думаю! – Drwhite