Почти все примеры oauth в блогах, кажется, являются примерами фазы авторизации oauth, и ни один из них не фокусируется на том, как на самом деле делать запросы, когда они у вас есть, поскольку, как только вы поймете, как это работает, эта часть совершенно очевидна. Получить первоначальное понимание, к сожалению, довольно сложно.
Если вы просто пытаетесь получить доступ к своей учетной записи Twitter из скрипта или приложения для себя, вы можете получить токен доступа (называемый ключом в библиотеке Python oauth) и секретный ключ на dev.twitter.com по адресу внизу страницы настроек вашего приложения под заголовком Токен доступа .
import oauth2 as oauth
import json
CONSUMER_KEY = "your app's consumer key"
CONSUMER_SECRET = "your app's consumer secret"
ACCESS_KEY = "your access token"
ACCESS_SECRET = "your access token secret"
consumer = oauth.Consumer(key=CONSUMER_KEY, secret=CONSUMER_SECRET)
access_token = oauth.Token(key=ACCESS_KEY, secret=ACCESS_SECRET)
client = oauth.Client(consumer, access_token)
timeline_endpoint = "https://api.twitter.com/1.1/statuses/home_timeline.json"
response, data = client.request(timeline_endpoint)
tweets = json.loads(data)
for tweet in tweets:
print tweet['text']
В этом примере используется библиотека python lib python-oauth2 , которая, к сожалению, называется библиотекой OAuth, а не библиотекой OAuth2.
Если вы хотите разрешить другим людям авторизовать их учетную запись для использования вашим приложением, вам нужно реализовать танец перенаправления, где вы просите щебетать пару токен / секретный запрос, а затем перенаправить пользователя на страницу авторизации щебета с помощью Этот токен запроса, они входят и авторизуют токен и перенаправляются обратно в ваше приложение, затем вы обмениваете токен запроса на токен доступа и секретную пару, которые вы можете хранить и использовать для выполнения запросов, как описано выше.
Пример трехстороннего OAuth в Twitter в Readme на http://github.com/simplegeo/python-oauth2 , кажется, охватывает то, что необходимо сделать
Если вы, как и я, предпочли бы использовать некоторый библиотечный код, где они, вероятно, подумали обо всех особых случаях, например, что происходит, если вы передадите null или точки в путь, но не в имени файла, вы можете использовать следующее:
import org.apache.commons.io.FilenameUtils;
String fileNameWithOutExt = FilenameUtils.removeExtension(fileNameWithExt);
Самый простой способ - использовать регулярное выражение.
fileNameWithOutExt = "test.xml".replaceFirst("[.][^.]+$", "");
Вышеупомянутое выражение удалит последнюю точку, за которой следует один или несколько символов. Вот базовый модульный тест.
public void testRegex() {
assertEquals("test", "test.xml".replaceFirst("[.][^.]+$", ""));
assertEquals("test.2", "test.2.xml".replaceFirst("[.][^.]+$", ""));
}
См. Следующую тестовую программу:
public class javatemp {
static String stripExtension (String str) {
// Handle null case specially.
if (str == null) return null;
// Get position of last '.'.
int pos = str.lastIndexOf(".");
// If there wasn't any '.' just return the string as is.
if (pos == -1) return str;
// Otherwise return the string, up to the dot.
return str.substring(0, pos);
}
public static void main(String[] args) {
System.out.println ("test.xml -> " + stripExtension ("test.xml"));
System.out.println ("test.2.xml -> " + stripExtension ("test.2.xml"));
System.out.println ("test -> " + stripExtension ("test"));
System.out.println ("test. -> " + stripExtension ("test."));
}
}
, которая выводит:
test.xml -> test
test.2.xml -> test.2
test -> test
test. -> test