我是使用黑莓 API 进行此类社交网络应用程序集成的新手。
我想开发这样一种应用程序,它可以使用可用的黑莓 api 来使用 facebook 或 twitter 社交网站集成。
如何使用黑莓 API 访问 Facebook?facebook是否有任何可用的网络服务,黑莓api可以在其上工作和访问它?是否有任何应用程序具有使用黑莓 api 访问 facebook 的完整源代码?
如果有人有任何解决方案或任何有用的链接或任何代码片段,将不胜感激。:)
谢谢,米沙尔
我是使用黑莓 API 进行此类社交网络应用程序集成的新手。
我想开发这样一种应用程序,它可以使用可用的黑莓 api 来使用 facebook 或 twitter 社交网站集成。
如何使用黑莓 API 访问 Facebook?facebook是否有任何可用的网络服务,黑莓api可以在其上工作和访问它?是否有任何应用程序具有使用黑莓 api 访问 facebook 的完整源代码?
如果有人有任何解决方案或任何有用的链接或任何代码片段,将不胜感激。:)
谢谢,米沙尔
Facebook 提供了一个基于 Web 服务的 API 供您使用 - 他们在此处提供有关它的信息:
http://wiki.developers.facebook.com/index.php/Platform_Basics
我强烈建议使用 Sun Java Wireless Toolkit(可在此处获得用于 CLDC 的 Sun Java Wireless Toolkit 2.5.2_01:SJW Toolkit)——安装后使用 Utilities 应用程序,然后使用“存根生成器”——它将为所有用户创建 J2ME 类和存根Web 服务调用,然后您可以将其引入您的 BlackBerry 项目。我一直使用它从 BlackBerry 调用 Web 服务,它比创建自己的 Web 服务调用包装器要容易得多。一切都将是强类型的,所有需要的对象和类都将为您创建。
请参阅 Eki Y. Baskoro 提供的代码示例:Blackberry 上的 Facebook Connect
以下是在 Blackberry 上使用 Facebook Connect 的简短 HOWTO。我创建了一个简单的 Facade,封装了 Facebook REST API,并为屏幕导航添加了“粗略”的 MVC 方法。我已经使用 8320 模拟器在 JDE 4.5 上进行了测试。这仍在进行中,所有工作都是 GPL 的。
谈到twitter,有一个twitter api和开源 j2me 客户端 - jibjib可以查看。
示例发布状态:
class Scr extends MainScreen implements FieldChangeListener {
BasicEditField musername;
BasicEditField mPassword;
BasicEditField mStatus;
ButtonField mUpdateStatus;
public Scr() {
add(musername = new BasicEditField("username: ", ""));
add(mPassword = new BasicEditField("password: ", ""));
add(mStatus = new BasicEditField("status: ", ""));
mUpdateStatus = new ButtonField(ButtonField.CONSUME_CLICK);
mUpdateStatus.setLabel("update status");
mUpdateStatus.setChangeListener(this);
add(mUpdateStatus);
}
public void fieldChanged(Field field, int context) {
if (mUpdateStatus == field) {
String username = musername.getText().trim();
String password = mPassword.getText().trim();
String status = mStatus.getText().trim();
updateStatus(username, password, status);
} else {
}
}
void updateStatus(String username, String password, String status) {
String response = "";
try {
String query = "status=" + urlEncode(status);
String len = String.valueOf(query.length());
SocketConnection hc = (SocketConnection) Connector
.open("socket://twitter.com:80");
DataOutputStream dout =
new DataOutputStream(hc.openOutputStream());
DataInputStream din = new DataInputStream(hc.openInputStream());
String userPass = username + ":" + password;
byte[] encoded = Base64OutputStream.encode(userPass.getBytes(), 0,
userPass.length(), false, false);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
String request = "POST /statuses/update.json HTTP/1.1\r\n"
+ "Host: twitter.com:80\r\n"
+ "User-Agent: curl/7.18.0 (i486-pc-linux-gnu) " +
"libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 " +
"libidn/1.1\r\n"
+ "Accept: */*\r\n"
+ "Content-Type: application/x-www-form-urlencoded\r\n"
+ "Content-Length: " + len + "\r\nAuthorization: Basic "
+ new String(encoded) + "\r\n\r\n";
bos.write(request.getBytes());
bos.write(query.getBytes());
dout.write(bos.toByteArray());
dout.flush();
dout.close();
byte[] bs = new byte[900];
din.readFully(bs);
bos = new ByteArrayOutputStream();
bos.write(bs);
din.close();
hc.close();
response = bos.toString();
} catch (Exception ex) {
System.out.println(ex.getMessage()+" "+response);
}
}
public static String urlEncode(String s) {
if (s != null) {
try {
s = new String(s.getBytes("UTF-8"), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
}
StringBuffer tmp = new StringBuffer();
try {
for (int i = 0; i < s.length(); i++) {
int b = (int) s.charAt(i);
if ((b >= 0x30 && b <= 0x39) || (b >= 0x41 && b <= 0x5A)
|| (b >= 0x61 && b <= 0x7A)) {
tmp.append((char) b);
} else if (b == 0x20) {
tmp.append("+");
} else {
tmp.append("%");
if (b <= 0xf) {
tmp.append("0");
}
tmp.append(Integer.toHexString(b));
}
}
} catch (Exception e) {
}
return tmp.toString();
}
return null;
}
}
更新
用于 RIM 的 Twitter API ME lib v.1.8在Project Kenai上可用
Twitter Basic Auth 方法从今天开始被弃用。您现在必须使用 OAuth ...
要使用本机应用程序从黑莓连接到 Facebook,您可以使用 Facebook sdk for blackberry。你可以从 github.com 下载。搜索 Facebook sdk。它还将附带一些示例,这些示例清楚地展示了 Facebook api 的用法。