在 Facebook 2.5 图形 API 中,每当您发布发布请求时,您只需像这样调用请求方法 -
Util.parseJson(facebook.request("me/photos", parameters,"POST"));
如果您已获得授权,Facebook 将自动发布照片(或文字)。
但在新的图形 API 3.0 中,每次我发送请求时,Facebook 都会打开授权对话框。我可以发布照片和视频,但如果会话在授权后已经打开,我不想打开对话框。这是我的代码 -
private void uploadVideo() {
final Session session = Session.getActiveSession();
final Request request;
if(session.isOpened())
{
OpenRequest openRequest = new OpenRequest(getActivity());
openRequest.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
openRequest.setCallback(null);
List<String> PERMISSIONS = new ArrayList<String>();
PERMISSIONS.add("publish_stream");
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(getActivity(), PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
Callback callback = new Callback() {
@Override
public void onCompleted(Response response) {
System.out.println(response.toString());
}
};
File file = new File(Environment.getExternalStorageDirectory()+"/123.mp4");
if(file.exists())
{
try {
request = Request.newUploadVideoRequest(session, file, callback);
RequestAsyncTask task = new RequestAsyncTask(request);
task.execute();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
更新
我尝试替换这两行 -
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(getActivity(), PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
有了这个-
openRequest.setPermissions(PERMISSIONS);
通过这样做,它不会显示授权对话框,但成功率是 2 出 3。有时响应消息状态 -
发生意外错误。