Пытаюсь реализовать простую задачу - пост какого-либо сообщения на стену в социальных сетях. Наткнулся на данную библиотеку ScribeJava. Создал приложение на Facebook. Открыл пример FacebookExample. Пытаюсь запустить. В качестве callback использую "https://www.google.com".
public static void main(String... args) throws IOException, InterruptedException, ExecutionException {
// Replace these with your client id and secret
final String clientId = "176......550";
final String clientSecret = "2b8...............42";
final String secretState = "secret" + new Random().nextInt(999_999);
final OAuth20Service service = new ServiceBuilder()
.apiKey(clientId)
.apiSecret(clientSecret)
.state(secretState)
//.callback("http://www.example.com/oauth_callback/")
.callback("https://www.google.com")
.build(FacebookApi.instance());
final Scanner in = new Scanner(System.in, "UTF-8");
System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
System.out.println();
// Obtain the Authorization URL
System.out.println("Fetching the Authorization URL...");
final String authorizationUrl = service.getAuthorizationUrl();
System.out.println("Got the Authorization URL!");
System.out.println("Now go and authorize ScribeJava here:");
System.out.println(authorizationUrl);
System.out.println("And paste the authorization code here");
System.out.print(">>");
final String code = in.nextLine();
System.out.println();
System.out.println("And paste the state from server here. We have set 'secretState'='" + secretState + "'.");
System.out.print(">>");
final String value = in.nextLine();
if (secretState.equals(value)) {
System.out.println("State value does match!");
} else {
System.out.println("Ooops, state value does not match!");
System.out.println("Expected = " + secretState);
System.out.println("Got = " + value);
System.out.println();
}
// Trade the Request Token and Verfier for the Access Token
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(code);
System.out.println("Got the Access Token!");
System.out.println("(if your curious it looks like this: " + accessToken
+ ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
System.out.println("Now we're going to access a protected resource...");
final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
service.signRequest(accessToken, request);
final Response response = service.execute(request);
System.out.println("Got it! Lets see what we found...");
System.out.println();
System.out.println(response.getCode());
System.out.println(response.getBody());
System.out.println();
System.out.println("Thats it man! Go and build something awesome with ScribeJava! :)");
}
Пытаюсь вставить ответ, который проходит после редиректа. Он имеет вид:
https://www.google.com.ua/?state=secret592342&gws_rd=cr&ei=cyisWPHZKMKxsQGT5pKgBg#_=_
Затем вставляю Secret, который приходит там же. После чего возникает ошибка: Что я делаю не так?
UPD: Добавил полный код ошибки:
Exception in thread "main" FacebookAccessTokenErrorResponse{'type'='OAuthException', 'code'='100', 'fbtraceId'='FdKIXHhZ6PN', 'rawResponse'='{"error":{"message":"Invalid verification code format.","type":"OAuthException","code":100,"fbtrace_id":"FdKIXHhZ6PN"}}', 'message'='Invalid verification code format.'}
at com.github.scribejava.apis.facebook.FacebookAccessTokenJsonExtractor.generateError(FacebookAccessTokenJsonExtractor.java:44)
at com.github.scribejava.core.extractors.OAuth2AccessTokenJsonExtractor.extract(OAuth2AccessTokenJsonExtractor.java:47)
at com.github.scribejava.core.extractors.OAuth2AccessTokenJsonExtractor.extract(OAuth2AccessTokenJsonExtractor.java:16)
at com.github.scribejava.core.oauth.OAuth20Service.sendAccessTokenRequestSync(OAuth20Service.java:37)
at com.github.scribejava.core.oauth.OAuth20Service.getAccessToken(OAuth20Service.java:61)
at com.killersssurprise.SocialMedia.FacebookExample.main(FacebookExample.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите как проверить тип или расширение файла? Я проверяю файл на расширение, в конце имениНо я знаю что можно его изменить и, допустим,...
Изменила parent Theme с parent="@android:style/ThemeMaterial
Как при запуске приложения можно просмотреть какие активити были запущены?