Войдите в Dropbox с помощью токена доступа

Я использовал этот код (из Spring.NET Social Dropbox) для доступа к Dropbox с помощью приложения C # Winform: https://github.com/spring-projects/spring-net-social-dropbox/blob/master/examples/Spring.ConsoleQuickStart/src/Spring.ConsoleQuickStart/Program.cs

DropboxServiceProvider dropboxServiceProvider = new DropboxServiceProvider(DropboxAppKey, DropboxAppSecret, AccessLevel.Full);
// Authorization without callback url
Console.Write("Getting request token...");
OAuthToken oauthToken = dropboxServiceProvider.OAuthOperations.FetchRequestTokenAsync(null , null).Result;
Console.WriteLine("Done");
OAuth1Parameters parameters = new OAuth1Parameters();
string authenticateUrl = dropboxServiceProvider.OAuthOperations.BuildAuthorizeUrl(oauthToken.Value, parameters);
Console.WriteLine("Redirect user for authorization");
Process.Start(authenticateUrl);
Console.Write("Press any key when authorization attempt has succeeded");
Console.ReadLine();
Console.Write("Getting access token...");
AuthorizedRequestToken requestToken = new AuthorizedRequestToken(oauthToken, null);
OAuthToken oauthAccessToken = dropboxServiceProvider.OAuthOperations.ExchangeForAccessTokenAsync(requestToken, null).Result;
Console.WriteLine("Done");
IDropbox dropbox = dropboxServiceProvider.GetApi(oauthAccessToken.Value, oauthAccessToken.Secret);
DropboxProfile profile = dropbox.GetUserProfileAsync().Result;

Но я вижу, что можно получить токен доступа напрямую, как описано здесь: https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/

Так можно ли использовать токен доступа, полученный вручную, как во второй ссылке, для входа в Dropbox?

Я попытался передать токен непосредственно dropboxServiceProvider.GetApi, но это не сработало.


person Jerry    schedule 08.05.2015    source источник


Ответы (2)


Так можно ли использовать токен доступа, полученный вручную, как во второй ссылке, для входа в Dropbox?

Если это ваш вопрос, ответ - НЕТ. Ты не можешь. Dropbox утверждает, что в документации.

Обратите внимание, что сгенерированный токен доступа работает только для вашей учетной записи Dropbox. После развертывания приложения для других пользователей вам потребуется использовать стандартный процесс авторизации OAuth для получения токенов для каждого пользователя.

Также немного об используемой вами библиотеке. Spring-net-social-dropbox последний раз обновлялся в ноябре 2012 года, в то время как API Dropbox был OAuth 1.0. О том, что Dropbox для версии OAuth2.0 сейчас использует, было объявлено только в июле 2013 года. По сути, это означает, что вы используете устаревшую библиотеку.

Ссылка на более современные API: https://www.dropbox.com/developers/core/sdks/other

Обновление
Документация для DropNet: http://dropnet.github.io/dropnet.html

person naveen    schedule 08.05.2015
comment
-Не могли бы вы указать мне, где обсуждаются токены в их документации? Я пробовал другие API, но у меня работал только этот. - person Jerry; 08.05.2015
comment
@Jerry: не используйте проект spring-net-social-dropbox. Он устарел и использует OAuth1. - person naveen; 08.05.2015
comment
Можете ли вы направить меня в рабочий проект для использования любого api. - person Jerry; 08.05.2015
comment
Мне жаль. ТАК на самом деле не дает мне сайт codez. Документация полная. Вы это читали? - person naveen; 08.05.2015
comment
Спасибо! Это сработало. Документация совсем не полная, как и остальные проверенные мной API. Но я разобрался. Я использовал var _client = new DropNetClient(key, secret, token); и удалил остальной код аутентификации. Теперь веб-аутентификация не требуется. - person Jerry; 08.05.2015
comment
Первая часть этого ответа представляет собой странную смесь правильного и неправильного. :-) Да, вы, конечно, можете использовать токен доступа, который вы получаете из консоли приложения, для аутентификации вызовов API - вот почему он там. И да, этот токен доступа предназначен для вашей учетной записи, поэтому, если вы создаете приложение для других пользователей, вам нужно будет использовать поток OAuth для получения токенов доступа для их учетных записей. - person user94559; 09.05.2015
comment
smarx, он упоминает об этом токене, который выдается разработчикам для тестирования. blogs.dropbox.com / разработчики / 2014/05 /. Чтобы упростить эту задачу, мы недавно добавили возможность генерировать токен доступа OAuth 2 для вашей учетной записи одним нажатием кнопки. - person naveen; 09.05.2015
comment
@naveen Да, я знаком. Я автор этого сообщения в блоге. - person user94559; 11.05.2015
comment
@naveen Тогда я не уверен, в чем (и если что?) мы не согласны. Токен доступа, который вы получаете из консоли приложения, такой же, как если бы вы авторизовали свою учетную запись. Если вы единственный пользователь приложения (как кажется в данном случае), это самый простой способ авторизовать приложение. - person user94559; 11.05.2015

Токен доступа, сгенерированный из консоли приложения, является токеном доступа OAuth 2, но остальная часть вашего кода, похоже, использует OAuth 1. Если используемая вами библиотека поддерживает OAuth 2, вы должны иметь возможность использовать сгенерированный токен доступа. Если этого не произойдет, то, боюсь, вам придется получить токен, пройдя поток OAuth.

person user94559    schedule 08.05.2015
comment
Существует пространство имен, использующее Spring.Social.OAuth2, но мне не удалось найти по нему никакой документации. - person Jerry; 08.05.2015