locked
Расшарить картинку в facebook RRS feed

  • Вопрос

  • Можно узнать,каким образом расшарить картинку в facebook. 

    Точнее вообще у меня содержимое canvas шариться должно,но я могу сохранить его в виде картинке в Изображениях.

    Я нашёл пару советов,но мне кажется,что они для других типов проектов.

    В частности тут есть пример:http://stackoverflow.com/questions/4952993/share-using-facebook-c-sharp-sdk,

    но там есть 

    dynamic parameters = new ExpandoObject();

    А у меня не получается найти пространство имён ExpandoObject.

    Точнее получается(пространство System.Dynamic. ),но это пространство,судя по всему,не подключить в приложениях для windows 8.

    Можно ли увидеть живой пример функции,которая шарит картинку? Или мысли по этому поводу?

    6 марта 2014 г. 7:54

Ответы

  • Пример как росшарить картинку:

    namespace ShareSource 
    { 
        public sealed partial class ShareImage : SDKTemplate.Common.SharePage 
        { 
            private StorageFile imageFile; 
     
            public ShareImage() 
            { 
                this.InitializeComponent(); 
            } 
     
            protected override bool GetShareContent(DataRequest request) 
            { 
                bool succeeded = false; 
     
                if (this.imageFile != null) 
                { 
                    DataPackage requestData = request.Data; 
                    requestData.Properties.Title = TitleInputBox.Text; 
                    requestData.Properties.Description = DescriptionInputBox.Text; // The description is optional. 
                    requestData.Properties.ContentSourceApplicationLink = ApplicationLink; 
     
                    // It's recommended to use both SetBitmap and SetStorageItems for sharing a single image 
                    // since the target app may only support one or the other. 
     
                    List<IStorageItem> imageItems = new List<IStorageItem>(); 
                    imageItems.Add(this.imageFile); 
                    requestData.SetStorageItems(imageItems); 
     
                    RandomAccessStreamReference imageStreamRef = RandomAccessStreamReference.CreateFromFile(this.imageFile); 
                    requestData.Properties.Thumbnail = imageStreamRef; 
                    requestData.SetBitmap(imageStreamRef); 
                    succeeded = true; 
                } 
                else 
                { 
                    request.FailWithDisplayText("Select an image you would like to share and try again."); 
                } 
                return succeeded; 
            } 
     
            private async void SelectImageButton_Click(object sender, RoutedEventArgs e) 
            { 
                FileOpenPicker imagePicker = new FileOpenPicker 
                { 
                    ViewMode = PickerViewMode.Thumbnail, 
                    SuggestedStartLocation = PickerLocationId.PicturesLibrary, 
                    FileTypeFilter = { ".jpg", ".png", ".bmp", ".gif", ".tif" } 
                }; 
     
                StorageFile pickedImage = await imagePicker.PickSingleFileAsync(); 
     
                if (pickedImage != null) 
                { 
                    this.imageFile = pickedImage; 
     
                    // Display the image in the UI. 
                    IRandomAccessStream displayStream = await pickedImage.OpenAsync(FileAccessMode.Read); 
                    BitmapImage bitmapImage = new BitmapImage(); 
                    bitmapImage.SetSource(displayStream); 
                    ImageHolder.Source = bitmapImage; 
                    this.rootPage.NotifyUser("Selected " + pickedImage.Name + ".", NotifyType.StatusMessage); 
     
                    ShareStep.Visibility = Visibility.Visible; 
                } 
            } 
        } 
    } 

    xaml код:

    <common:SharePage 
        x:Class="ShareSource.ShareImage" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:local="using:ShareSource" 
        xmlns:common="using:SDKTemplate.Common" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        mc:Ignorable="d"> 
     
        <Grid x:Name="LayoutRoot" Background="White" HorizontalAlignment="Left" VerticalAlignment="Top"> 
            <Grid.RowDefinitions> 
                <RowDefinition Height="Auto"/> 
                <RowDefinition Height="*"/> 
            </Grid.RowDefinitions> 
            <Grid x:Name="Input" Grid.Row="0"> 
                <Grid.RowDefinitions> 
                    <RowDefinition Height="Auto"/> 
                    <RowDefinition Height="*"/> 
                </Grid.RowDefinitions> 
                <StackPanel HorizontalAlignment="Left"> 
                    <TextBlock TextWrapping="Wrap" Width="500" Style="{StaticResource BasicTextStyle}"> 
                        Data Package Title: 
                    </TextBlock> 
                    <TextBox x:Name="TitleInputBox" HorizontalAlignment="Stretch" MaxWidth="500" TextWrapping="Wrap" Text="My image" 
                             AutomationProperties.AutomationId="DataPackageTitle"/> 
                    <TextBlock TextWrapping="Wrap" Style="{StaticResource BasicTextStyle}"> 
                        <LineBreak />Data Package Description: 
                    </TextBlock> 
                    <TextBox x:Name="DescriptionInputBox" HorizontalAlignment="Stretch" MaxWidth="500" TextWrapping="Wrap" Text="Selected image from the Share Source sample" 
                             AutomationProperties.AutomationId="DataPackageDescription"/> 
                    <TextBlock TextWrapping="Wrap" Style="{StaticResource BasicTextStyle}"> 
                        <LineBreak />Select the image you would like to share 
                    </TextBlock> 
                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0"> 
                        <Button x:Name="SelectImageButton" Content="Select image" Margin="0,0,10,0" Click="SelectImageButton_Click" 
                             AutomationProperties.AutomationId="SelectImageButton"/> 
                    </StackPanel> 
                    <StackPanel x:Name="ShareStep" Visibility="Collapsed" HorizontalAlignment="Left"> 
                        <TextBlock Style="{StaticResource BasicTextStyle}" HorizontalAlignment="Stretch" MaxWidth="500" TextWrapping="Wrap" TextAlignment="Left"> 
                            <LineBreak/>To share, bring up the charms bar and select Share (or press Win+H).<LineBreak/> 
                            <LineBreak/>You can also invoke share programmatically after prompting the user in response to an event 
                            (e.g. Your high score is 687 points. Do you want to share it now?) 
                        </TextBlock> 
                        <Button x:Name="ShowUIButton" Content="Share" Margin="0,10,0,0" Click="ShowUIButton_Click" 
                             AutomationProperties.AutomationId="ShareButton"/> 
                    </StackPanel> 
                </StackPanel> 
            </Grid> 
     
            <Grid x:Name="Output" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Row="1"> 
                <Image x:Name="ImageHolder" AutomationProperties.Name="A placeholder image" Source="Assets/placeholder-sdk.png" Stretch="None" HorizontalAlignment="Left" VerticalAlignment="Top"/> 
            </Grid> 
             
            <!-- Add Storyboards to the visual states below as necessary for supporting the various layouts --> 
            <VisualStateManager.VisualStateGroups> 
                <VisualStateGroup> 
                    <VisualState x:Name="DefaultLayout"/> 
                    <VisualState x:Name="Below768Layout"/> 
                </VisualStateGroup> 
            </VisualStateManager.VisualStateGroups> 
        </Grid> 
    </common:SharePage> 

    Нет ничего сложного :)

    Взято тут.


    I ♥ C#

    • Помечено в качестве ответа mpnj 12 марта 2014 г. 2:55
    7 марта 2014 г. 7:09

Все ответы

  • Ну блин,200 просмотров и нет ответа?)
    6 марта 2014 г. 9:00
  • Завтра на работе попробую.

    хотя у меня windows 8.1 ,а так же vs2013

    6 марта 2014 г. 11:02
  • Да какая разница 8.0 или 8.1, это Share контракт. Он позволит "шарить" картинки в любое установленное приложение, которое сможет принять этот файл.

    Поковыряйте этот семпл, может из него сможете отправить картинку. но для этого Вам нужно будет сперва зарегать своё приложение в Фейсбуке.

    Facebook SDK win8.0 sample

    6 марта 2014 г. 11:50
  • Мне и первый пример подходит. Он использует приложение People,как прослойку между Соц.сетями и приложением. В итоге можно без регистрации постить,куда угодно. 

    Надо только разобраться с тем,что буду постить,т.к. с ходу не получается локальный контент скормить. 

    7 марта 2014 г. 3:09
  • Хм.

    Есть такой код. 

     DataPackage requestData = request.Data;
     requestData.Properties.Title = TitleTB.Text;
     requestData.Properties.Description = ""; // The description is optional.
     requestData.SetUri(new Uri(LinkTB.Text));

    И он работает. Всё отправляет. Можно картинку даже отправить. LinkTB-форма для ввода ссылки на элемент.

    Я изменил код на такой:

     DataPackage requestData = request.Data;
     requestData.Properties.Title = TitleTB.Text;
    requestData.Properties.Description = ""; // The description is optional.
    Uri _baseUri = new Uri("ms-appx:///");
    string path = "Assets\\12.png";
    Uri myUri = new Uri(_baseUri, path);
    requestData.SetUri(myUri);

    И не работает. Клиенты пишут,что проблема с контентом.

    Вроде в обоих случаях даётся uri.

    Но во втором случае с локальной машины картинку гружу. 
    Есть ли мысли какие-то по этому поводу?

    7 марта 2014 г. 3:39
  • По ссылке получается картинку только на почту послать.

    А вот ваш пример попробую дома запустить.

    7 марта 2014 г. 7:30
  • Да, и ваш пример тоже не позволяет шарить картинки на facebook.

    Там только на почту можно отправить. И ещё одна загадочная строка есть "Share Target C# Sample"

    7 марта 2014 г. 7:38
  • Хм. Просто у меня другой контент шарится в facebook. А именно этот нет.

    То есть приложением может стоять,но работать только с текстом например?

    А можете сказать,какое у вас приложение стоит? Через какое получается? Я себе поставлю и потестирую.

    7 марта 2014 г. 16:03