[英]Apprequest of Android Facebook sdk 3.0
我正在使用更新的Android版Facebook SDK V3.0 final。 我试图将应用程序请求发送给没有该应用程序的Facebook朋友。 代码是:
public void fbookinvite(){
Bundle postParams = new Bundle();
postParams.putString("name", "X");
postParams.putString("message", "DOWNLOAD X.");
Session session = Session.getActiveSession();
postParams.putString("access_token", session.getAccessToken());
if (session==null||session.getState().isClosed()){
System.out.println("session is null");
}else{
//meaning we are good to go.
Request request = new Request(session,"/friend facebook id/apprequests", postParams, HttpMethod.POST, new Request.Callback() {
@Override
public void onCompleted(Response response) {
System.out.println("response was: "+response.toString());
}
});
Request.executeBatchAsync(request);
}
}
代码运行时,我从打印的响应中获得以下内容之一:
responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 2, errorType: OAuthException, errorMessage: (#2) Failed to create any app request}, isFromCache:false
... 要么:
Response: responseCode: unknown, graphObject: null, error: {HttpStatus: -1, errorCode: -1, errorType: null, errorMessage: null}, isFromCache:false}
我具有以下权限: publist_stream
和publish_actions
。
解决问题之后,我还想知道如何向应用程序请求中添加一组收件人。
我不想使用Facebook对话框。
尝试以下方法:
Bundle params = new Bundle();
params.putString("message",
"Learn how to make your Android apps social");
params.putString("to", "YOUR_FRIEND_UID_HERE");
WebDialog requestsDialog = (new WebDialog.RequestsDialogBuilder(
this, Session.getActiveSession(), params))
.setOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Bundle values,
FacebookException error) {
// your code here
}
}).build();
requestsDialog.show();
这是将应用请求显式发送给某人的正确方法。 如果不包括to
参数,则用户可以选择要发送给谁。
Response: responseCode: unknown, graphObject: null, error: {HttpStatus: -1, errorCode: -1, errorType: null, errorMessage: null}, isFromCache:false}
这种情况通常与在您自己的线程上同时运行FB请求有关。 我学会了使用这两种方法的困难方式
Request.executeAsync()
要么
RequestAsyncTask
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.