我有一个应用程序,我想在Facebook上分享历史记录。我的应用程序没有网页。我只想分享带有标题和说明的图片,如果有可能,当点击共享网站时,他们会重定向到谷歌播放下载应用程序或Facebook应用程序页面。
我在大多数facebook样本中寻找答案,而且有些事情我肯定会做错。 我做了所有的Facebook应用程序配置。关键哈希等...我在开放图形中创建一个名为Publicar a Lugar的历史。行动=" Publicar"对象="卢格&#34 ;.
我有这段代码
private void OpenShareDialog(){
Session session = Session.getActiveSession();
if (session != null) {
// Check for publish permissions
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
return;
}
}
OpenGraphObject oplugar = OpenGraphObject.Factory.createForPost("namespace:lugar");
oplugar.setProperty("og:type","namespace:lugar");
oplugar.setProperty("og:title", LugarCargado.getNombre());
//oplugar.setProperty("og:image", "http://estaticos.sport.es/resources/jpg/2/1/1391546433412.jpg");
//oplugar.setProperty("og:url", "http://www.udg.edu/");
oplugar.setProperty("og:description", LugarCargado.getDescripcion());
//Bitmap bitmap;
//List<Bitmap> bitmaps = new ArrayList<Bitmap>();
//bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.icoappfacebook2);
//Log.i(TAG, "Imagen: Height:"+bitmap.getHeight()+ " Width:"+ bitmap.getWidth());
//bitmaps.add(bitmap);
//OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);
OpenGraphAction action = OpenGraphAction.Factory.createForPost("namespace:publicar");
action.setProperty("lugar", oplugar);
action.setType("namespace:publicar");
action.setProperty("previewPropertyName", oplugar);
FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(this, action, "lugar")
//.setImageAttachmentsForObject("lugar", bitmaps, true)
//.setImageAttachmentsForAction(bitmaps,true);
.build();
uiHelper.trackPendingDialogCall(shareDialog.present());
}
我在智能手机中调试了两个不同的错误:
1-如果我取消注释其中一行
//oplugar.setProperty("og:image", "http://estaticos.sport.es/resources/jpg/2/1/1391546433412.jpg");
//oplugar.setProperty("og:url", "http://www.udg.edu/");
我有一个错误,上面写着&#34; com.facebook.FacebookException:无法为用户生成预览。&#34;。我不能推动网址
2-如果我想添加自定义图像。如果我取消注释此代码
//Bitmap bitmap;
//List<Bitmap> bitmaps = new ArrayList<Bitmap>();
//bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.icoappfacebook2);
//Log.i(TAG, "Imagen: Height:"+bitmap.getHeight()+ " Width:"+ bitmap.getWidth());
//bitmaps.add(bitmap);
和
//.setImageAttachmentsForAction(bitmaps,true);
我有一个黑色的窗口,似乎有些东西重新启动......
02-08 15:09:46.500:W / GAV3(15911):线程[GAThread,5,main]:服务不可用(代码= 1), 将重试。 02-08 15:09:46.500:I / GAV3(15911):线程[GAThread,5,main]:否 广告系列数据。 02-08 15:09:48.482:D / AbsListView(15911): unregisterIRListener()被称为02-08 15:09:48.982: D / AbsListView(15911):调用onVisibilityChanged(),可见性:4 02-08 15:09:48.982:D / AbsListView(15911):unregisterIRListener()是 叫02-08 15:09:51.525:W / GAV3(15911):线程[服务 重新连接,5,主要]:服务不可用(代码= 1),使用本地存储。 02-08 15:09:53.778:D / AbsListView(16092):获取MotionRecognitionManager 02-08 15:09:53.778:D / AbsListView(16092):onVisibilityChanged()是 叫,能见度:8 02-08 15:09:53.778:D / AbsListView(16092): unregisterIRListener()被称为02-08 15:09:53.788: D / ProgressBar(16092):setProgress = 0 02-08 15:09:53.788: D / ProgressBar(16092):setProgress = 0,fromUser = false 02-08 15:09:53.788:D / ProgressBar(16092):mProgress = 0mIndeterminate = false,mMin = 0,mMax = 10000 02-08 15:09:53.828: D / AbsListView(16092):调用onVisibilityChanged(),可见性:4 02-08 15:09:53.828:D / AbsListView(16092):unregisterIRListener()是 叫02-08 15:09:53.838:D / AbsListView(16092): 调用onVisibilityChanged(),可见性:0 02-08 15:09:53.838: D / AbsListView(16092):unregisterIRListener()被称为02-08 15:09:53.848:D / libEGL(16092):已加载 /system/lib/egl/libEGL_adreno200.so 02-08 15:09:53.858: D / libEGL(16092):已加载/system/lib/egl/libGLESv1_CM_adreno200.so 02-08 15:09:53.858:D / libEGL(16092):已加载 /system/lib/egl/libGLESv2_adreno200.so 02-08 15:09:53.858: I / Adreno200-EGL(16092):: EGL 1.4 QUALCOMM build:
AYELDER_AU_LINUX_ANDROID_JB_2.5.5.04.02.02.092.023 + PATCH [ES] _msm8960_JB_2.5.5_CL3556704_release_ENGG(CL3556704)02-08 15:09:53.858:I / Adreno200-EGL(16092):构建日期: 05/17/13 Fri 02-08 15:09:53.858:I / Adreno200-EGL(16092):当地分行: 02-08 15:09:53.858:I / Adreno200-EGL(16092):远程分支: quic / jb_2.5.5 02-08 15:09:53.858:I / Adreno200-EGL(16092):本地 补丁:34c9e193f12610d3e68dabd6198d2c4bfbc66974 RB:更新 主人
rb_texture_update_aliased 02-08中hw_image的时间戳 15:09:53.858:I / Adreno200-EGL(16092):重建分支: AU_LINUX_ANDROID_JB_2.5.5.04.02.02.092.023 + 01d3c78 +
e6f0547 + LOCAL_PATCH [ES] 02-08 15:09:53.878: D / OpenGLRenderer(16092):启用调试模式0 02-08 15:09:53.878: D / ProgressBar(16092):updateDrawableBounds:left = 0 02-08 15:09:53.878:D / ProgressBar(16092):updateDrawableBounds:top = 0 02-08 15:09:53.878:D / ProgressBar(16092):updateDrawableBounds:right = 72 02-08 15:09:53.878:D / ProgressBar(16092):updateDrawableBounds:bottom = 72 02-08 15:09:54.058:I / System(16092):加载时区 EN的名称为217ms(ICU为205ms)02-08 15:09:54.088: D / AbsListView(16092):调用onVisibilityChanged(),可见性:0 02-08 15:09:54.088:D / AbsListView(16092):unregisterIRListener()是 叫02-08 15:09:54.168:D / AbsListView(16092): unregisterIRListener()被称为02-08 15:09:54.178: D / AbsListView(16092):unregisterIRListener()被称为02-08 15:09:54.188:E / ViewRootImpl(16092):sendUserActionEvent()mView == null 02-08 15:09:54.268:D / AbsListView(16092):unregisterIRListener() 被称为02-08 15:09:58.833:W / GAV3(16092):线程[GAThread,5,main]: 服务不可用(代码= 1),将重试。 02-08 15:09:58.833: I / GAV3(16092):主题[GAThread,5,main]:未找到广告系列数据。 02-08 15:10:03.838:W / GAV3(16092):线程[服务重新连接,5,主要]:服务 不可用(代码= 1),使用本地商店。 02-08 15:10:10.565: D / AbsListView(16092):调用unregisterIRListener()
并显示上一个活动。
使用上面的代码,sharedialog向我显示了facebook对话框,我可以分享。但没有链接,没有我的形象。
你能帮帮我吗?我尝试了很多不同的事情! 这是我的智能手机吗? facebook版本?您是否有一个简单的示例来共享自定义(为用户制作)图像以及共享对话框中的描述?
谢谢,对不起我的英语。
答案 0 :(得分:1)
如果您没有Web组件,则不要在og对象中设置URL。如果你设置了一个网址,facebook会尝试抓取该网址,如果从那里抓取的OG元数据与你提供的不匹配,那么它将会失败。
如果要在OG操作中添加位图,除了当前正在执行的操作外,还必须向清单添加NativeAppCallContentProvider。请参阅此处的文档:https://developers.facebook.com/docs/reference/android/current/class/NativeAppCallContentProvider/这就是Facebook应用程序实际获取您尝试发送的位图的方式。
最后,看一下sdk附带的Scrumptious示例应用程序。它有一个选项(如果你“跳过登录”),它创建一个带有图像附件的新OG对象。
答案 1 :(得分:0)
使用此代码它可以工作,我没有“无法生成预览”。 但是这段代码正在运行我想要的不同的东西。 此代码打开一个OGActiondialog,但是当我分享它时,帖子永远不会出现在Feed中并出现在活动注册表中但只显示照片,而不是名称或描述,如“普通”sharelink(左边的小照片和titol和说明)在右边)。
是否可以这样做?
private void OpenShareDialog2(){
if (canPresentOGShareDialog) {
Session session = Session.getActiveSession();
if (session != null) {
// Check for publish permissions
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
Log.d(TAG, "Permisos pedidos");
return;
}
}
OpenGraphObject oplugar = OpenGraphObject.Factory.createForPost("namespace:lugar");
oplugar.setProperty("og:type","namespace:lugar");
oplugar.setProperty("og:title", LugarCargado.getNombre());
oplugar.setProperty("og:description", LugarCargado.getDescripcion());
//OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);
OpenGraphAction action = OpenGraphAction.Factory.createForPost("namespace:publicar");
action.setProperty("lugar", oplugar);
action.setType("namespace:publicar");
//action.setProperty("previewPropertyName", "lugar");
//action.setProperty("fb:explicitly_shared", true);
//action.setExplicitlyShared(true);
boolean userGenerated = false;
if (urifoto != null) {
String photoUriString = urifoto.toString();
Pair<File, Integer> fileAndMinDimemsion = getImageFileAndMinDimension();
userGenerated = fileAndMinDimemsion.second >= USER_GENERATED_MIN_SIZE;
// If we have a content: URI, we can just use that URI, otherwise we'll need to add it as an attachment.
if (fileAndMinDimemsion != null && urifoto.getScheme().startsWith("content")) {
action.setImage(getImageListForAction(photoUriString, userGenerated));
}
}
FacebookDialog.OpenGraphActionDialogBuilder builder = new FacebookDialog.OpenGraphActionDialogBuilder(this, action, "lugar");
//.setFragment(SelectionFragment.this);
if (urifoto != null && !urifoto.getScheme().startsWith("content")) {
builder.setImageAttachmentFilesForAction(Arrays.asList(new File(urifoto.getPath())), userGenerated);
}
uiHelper.trackPendingDialogCall(builder.build().present());
}
}
private Pair<File, Integer> getImageFileAndMinDimension() {
File photoFile = null;
String photoUriString = urifoto.toString();
if (photoUriString.startsWith("file://")) {
photoFile = new File(urifoto.getPath());
} else if (photoUriString.startsWith("content://")) {
String [] filePath = { MediaStore.Images.Media.DATA };
Cursor cursor = this.getContentResolver().query(urifoto, filePath, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePath[0]);
String filename = cursor.getString(columnIndex);
cursor.close();
photoFile = new File(filename);
}
}
if (photoFile != null) {
InputStream is = null;
try {
is = new FileInputStream(photoFile);
// We only want to get the bounds of the image, rather than load the whole thing.
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, options);
return new Pair<File, Integer>(photoFile, Math.min(options.outWidth, options.outHeight));
} catch (Exception e) {
return null;
} finally {
Utility.closeQuietly(is);
}
}
return null;
}
我或多或少地从美味的样品中得到它!