2016-05-06 4 views
0

Я интегрирую API Google в API с открытым исходным кодом, работая над тем, где я разрешаю пользователю входить в систему с учетными данными учетной записи Google и с помощью процесса пользовательского согласия. У меня есть эта ошибка, когда я пытаюсь передать дополнительные разрешения области на знак в Uri. Я не уверен, что это проблема с моей кодировкой URL, потому что я уверен, что API ожидает массив URL-адресов. Можно ли разместить несколько разрешений в одном потоке oauth при интеграции API в Google?множество разрешений scope google fit api интеграция

Первый URL-адрес работает нормально, а другие получают ошибку вместо перенаправления.

https://accounts.google.com/ServiceLogin?passive=1209600&continue=https://accounts.google.com/o/oauth2/auth?access_type%3Doffline%26as%3D43045f60390ad399%26approval_prompt%3Dforce%26scope%3Dhttps://www.googleapis.com/auth/fitness.activity.read%26response_type%3Dcode%26redirect_uri%3Dhttps://developers.google.com/oauthplayground%26client_id%3D1086862838918-d6epsnkqrid4tu786geh3nfugpga2ii5.apps.googleusercontent.com%26from_login%3D1&oauth=1&sarp=1&scc=1 


https://accounts.google.com/ServiceLogin?passive=1209600&continue=https://accounts.google.com/o/oauth2/auth?access_type%3Doffline%26as%3D43045f60390ad399%26approval_prompt%3Dforce%26scope%3D%5B%22https://www.googleapis.com/auth/fitness.activity.read%22%2%22https://www.googleapis.com/auth/fitness.activity.write%26response_type%3Dcode%22%5D%26redirect_uri%3Dhttps://developers.google.com/oauthplayground%26client_id%3D1086862838918-d6epsnkqrid4tu786geh3nfugpga2ii5.apps.googleusercontent.com%26from_login%3D1&oauth=1&sarp=1&scc=1 

ответ

1

Вы проверили Getting Started on Android документацию на Google? Вот их пример кода для добавления объема:

mClient = new GoogleApiClient.Builder(this) 
.addApi(Fitness.SENSORS_API) 
.addScope(new Scope(Scopes.FITNESS_LOCATION_READ)) 
.addConnectionCallbacks(this) 
.build() 

Вы можете попробовать использовать addApi() и addScope(), чтобы получить разрешение Scope для использования.

Из этого учебника: Google Fit for Android: Sessions API можно добавить несколько областей разрешений для интеграции Google Fit API.

Вот их пример кода:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
ButterKnife.bind(this); 

mGoogleApiClient = new GoogleApiClient.Builder(this) 
.addApi(Fitness.SESSIONS_API) 
.addApi(Fitness.HISTORY_API) 
.addScope(new Scope(Scopes.FITNESS_LOCATION_READ_WRITE)) 
.addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE)) 
.addConnectionCallbacks(this) 
.enableAutoManage(this, 0, this) 
.build(); 
} 

EDIT:

Для веб-Я думаю, что вы можете использовать Запрос дополнительных разрешений через OAuth 2.0

auth2 = gapi.auth2.init({ 
client_id: 'CLIENT_ID.apps.googleusercontent.com', 
cookiepolicy: 'single_host_origin', /** Default value **/ 
scope: 'profile' });    /** Base scope **/ 

Везде, где необходимы дополнительные прицелы, запрос их, построив конструктор опций с областями, которые вы хотите добавить, а затем вызвав user.grant({scope: [OPTIONS BUILDER]}).then(successFunction, failFunction);:

var options = new gapi.auth2.SigninOptionsBuilder(
     {'scope': 'email https://www.googleapis.com/auth/drive'}); 

googleUser = auth2.currentUser.get(); 
googleUser.grant(options).then(
    function(success){ 
     console.log(JSON.stringify({message: "success", value: success})); 
    }, 
    function(fail){ 
     alert(JSON.stringify({message: "fail", value: fail})); 
    }); 

Добавьте это к вам Node.js, то вот список возможностей для Google FIT web

НТН

+0

Я не пробовал его на Android платформы, сооружает расширение хрома, который имеет nodejs бэкенд. Я использую nodejs ajax module, но модуль не имеет метода, который позволяет добавлять область разрешений после потока аутентификации. Вот с чем я работаю. [link] (https://www.npmjs.com/package/ajax-request). благодаря –