gpt4 book ai didi

java - 我可以使用 Java 为 LinkedIn 开发桌面应用程序吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:39 25 4
gpt4 key购买 nike

我想知道是否可以使用 Java 为 LinkedIn 开发桌面应用程序。我知道它可以很容易地作为一个网络应用程序来完成,但是一个完全桌面应用程序,这可能吗?我查看了 linkedin api 和 Java Wrapper for LinkedIn .该代码是针对 Web 应用程序进行解释的。我如何在 Java 桌面应用程序中管理它,特别是授权部分?oAuth 使用 Swing?

请以正确的方式指导我。

最佳答案

经过很长时间的 oAuth 测试(使用我自己的包装器),我选择了 Scribe,它是几乎所有 oAuth 机制的 Java 包装器。要在桌面客户端中包含 Linkedin,正如 Adam Trachtenberg(再次感谢您)所建议的那样,使用了 oob 选项,即登录后,必须在我们的客户端中输入由 linkedin 生成的代码,以便可以根据请求对其进行验证网址。希望这对某人有用。

public class LinkedInExample
{
private static final String PROTECTED_RESOURCE_URL = "http://api.linkedin.com/v1/people/~/connections:(id,last-name)";

public static void main(String[] args) throws IOException
{
OAuthService service = new ServiceBuilder()
.provider(LinkedInApi.class)
.apiKey("YourApiKey")
.apiSecret("YourApiSecret")
.build();
Scanner in = new Scanner(System.in);
//BareBonesBrowserLaunch.openURL("www.google.com");
System.out.println("=== LinkedIn's OAuth Workflow ===");
System.out.println();

// Obtain the Request Token
System.out.println("Fetching the Request Token...");
Token requestToken = service.getRequestToken();
System.out.println("Got the Request Token!");
System.out.println();

System.out.println("Now go and authorize Scribe here:");
String authURL = service.getAuthorizationUrl(requestToken);
System.out.println(authURL);
BareBonesBrowserLaunch.openURL("www.google.com");
System.out.println("And paste the verifier here");
System.out.print(">>");
Verifier verifier = new Verifier(in.nextLine());
System.out.println();

// Trade the Request Token and Verfier for the Access Token
System.out.println("Trading the Request Token for an Access Token...");
Token accessToken = service.getAccessToken(requestToken, verifier);
System.out.println("Got the Access Token!");
System.out.println("(if your curious it looks like this: " + accessToken + " )");
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...");
OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
service.signRequest(accessToken, request);
Response response = request.send();
System.out.println("Got it! Lets see what we found...");
System.out.println();
System.out.println(response.getBody());

System.out.println();
System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
}

}

BareBonesBrowserLaunch 用于启动默认浏览器,其中包含大多数操作系统中 token 请求的 Linkedin URL。由于 Desktop 部分在 Java 1.5 中不可用,BareBonesBrowserLaunch 解决了这个问题。

public class BareBonesBrowserLaunch {

static final String[] browsers = { "google-chrome", "firefox", "opera",
"epiphany", "konqueror", "conkeror", "midori", "kazehakase", "mozilla" };
static final String errMsg = "Error attempting to launch web browser";

public static void openURL(String url) {
try { //attempt to use Desktop library from JDK 1.6+
Class<?> d = Class.forName("java.awt.Desktop");
d.getDeclaredMethod("browse", new Class[] {java.net.URI.class}).invoke(
d.getDeclaredMethod("getDesktop").invoke(null),
new Object[] {java.net.URI.create(url)});
//above code mimicks: java.awt.Desktop.getDesktop().browse()
}
catch (Exception ignore) { //library not available or failed
String osName = System.getProperty("os.name");
try {
if (osName.startsWith("Mac OS")) {
Class.forName("com.apple.eio.FileManager").getDeclaredMethod(
"openURL", new Class[] {String.class}).invoke(null,
new Object[] {url});
}
else if (osName.startsWith("Windows"))
Runtime.getRuntime().exec(
"rundll32 url.dll,FileProtocolHandler " + url);
else { //assume Unix or Linux
String browser = null;
for (String b : browsers)
if (browser == null && Runtime.getRuntime().exec(new String[]
{"which", b}).getInputStream().read() != -1)
Runtime.getRuntime().exec(new String[] {browser = b, url});
if (browser == null)
throw new Exception(Arrays.toString(browsers));
}
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, errMsg + "\n" + e.toString());
}
}
}

}

LinkedInExample 主要取自该库 - https://github.com/fernandezpablo85/scribe-java/downloads不要忘记包含 Scribe jar 和 apache commons-codec(用于 Base64)

关于java - 我可以使用 Java 为 LinkedIn 开发桌面应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com