質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

1786閲覧

Xamarin Formsで、facebook認証ができない。

AyakoNan

総合スコア15

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2017/08/02 04:09

下記の通りの問題が起きて、Xamarin FormでFacebook認証がうまくいきません。
どなたか対処法をご存知の方、ご教授願います。
よろしくお願い致します。

■やろうとしたこと
Xamarin Formsで、Faccebook認証するアプリを作成しています。
下記MSのチュートリアルに基づいて作成しています。
https://docs.microsoft.com/ja-jp/azure/app-service-mobile/app-service-mobile-xamarin-forms-get-started-users

■問題点
DroidプロジェクトのMainActivityクラス、public async Task<bool> Authenticate()メソッドの下記の部分でエラーが出ます。

・ソース
// Sign in with Facebook login using a server-managed flow.
user = await TodoItemManager.DefaultManager.CurrentClient.LoginAsync(this,
MobileServiceAuthenticationProvider.Facebook);

・エラーメッセージ
エラー一覧をみると、下記のメッセージが出てきました。
エラー CS1503 引数 1: は 'testproject.Droid.MainActivity' から 'Microsoft.WindowsAzure.MobileServices.MobileServiceAuthenticationProvider' へ変換することはできません。 testproject.Droid F:\testproject_Xamarin_Forms (1)\Droid\MainActivity.cs 58 アクティブ
エラー CS1503 引数 2: は 'Microsoft.WindowsAzure.MobileServices.MobileServiceAuthenticationProvider' から 'Newtonsoft.Json.Linq.JObject' へ変換することはできません。 testproject.Droid F:\testproject_Xamarin_Forms (1)\Droid\MainActivity.cs 59 アクティブ

■調査内容
TodoItemManagerクラスのMobileServiceClientがおかしいのだろうと思って、調べてみました。

「using Microsoft.WindowsAzure.MobileServices;」はしていました。
ソースは、下記の通りです。

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.MobileServices;

#if OFFLINE_SYNC_ENABLED
using Microsoft.WindowsAzure.MobileServices.SQLiteStore;
using Microsoft.WindowsAzure.MobileServices.Sync;
#endif

namespace testproject
{
public partial class TodoItemManager
{
static TodoItemManager defaultInstance = new TodoItemManager();
MobileServiceClient client;

#if OFFLINE_SYNC_ENABLED
IMobileServiceSyncTable<TodoItem> todoTable;
#else
IMobileServiceTable<TodoItem> todoTable;
#endif

const string offlineDbPath = @"localstore.db"; private TodoItemManager() { this.client = new MobileServiceClient(Constants.ApplicationURL);

#if OFFLINE_SYNC_ENABLED
var store = new MobileServiceSQLiteStore(offlineDbPath);
store.DefineTable<TodoItem>();

//Initializes the SyncContext using the default IMobileServiceSyncHandler. this.client.SyncContext.InitializeAsync(store); this.todoTable = client.GetSyncTable<TodoItem>();

#else
this.todoTable = client.GetTable<TodoItem>();
#endif
}

public static TodoItemManager DefaultManager { get { return defaultInstance; } private set { defaultInstance = value; } } public MobileServiceClient CurrentClient { get { return client; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

LoginAsync() は Azure Mobile Apps .NET client SDK のバージョン 4 で変更があったようです。ドキュメントの Xamarin.Forms のページは古いままですが、 Xamarin.Android の方 は更新されています。見比べながら進めてみてください。手を入れなければいけないのはこのあたりではないでしょうか。

  • Azure 側の [認証/承認][許可される外部リダイレクト URL]
  • LoginAsync() の第3引数に URL スキーム
  • AndroidManifest.xml

追記です。その後、私の方でも挑戦しまして、 'you are now signed-in as ...' というメッセージが表示されるところまで行けました。

それはそうと、 英語版のドキュメント が更新されたようです。


再び追記です。 日本語版 も更新されました。


三度目の追記です。Visual Studio 2017 15.3 で再度ビルドしてみると、同様のエラー (NU1202) となってしまいました。8/16時点でどのように突破したのか思い出せず、エミュレーターに残る APK が動くだけです。面目ないです。

さて、エラーの内容を見る限り、 Microsoft.Azure.Moblie.Client と Xamarin.Forms とが両立するフレームワークは無いように思えます。考えられる対応は、 Microsoft.Azure.Mobile.Client を v3 に下げるか、 Xamarin.Forms を .NETStandard に対応させるかですが、ここまでの話の流れとしては後者で行きたいところです。

Xamarin.Forms を .NETStandard に対応させるには、 NuGet で Xamarin.Forms のプレリリース版をインストールします。詳細は Xamarin 公式の次の記事を参照してください。

Xamarin.Forms 2.4.0.266-pre1 を試したところ、動作しました。

投稿2017/08/05 04:37

編集2017/08/30 23:40
NakamuraYoichi

総合スコア374

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AyakoNan

2017/08/05 12:05

Xamarin.Androidの公式マニュアルを参考にしてXamarin Form修正したのですが、うまくいきませんでした。 Xamarin Formではなく、Xamarin.Androidで試してみたのですが、こちらではうまくいきました。 ですので、公式マニュアルが古いという可能性が高いです。 もう少し調べてみます。
AyakoNan

2017/08/18 07:58

ご返信ありがとうございます。挑戦して下さったのですね。 日本語版を参考にして試してみたのですが、2017だとうまくいかないですね。 「エラー NU1202 パッケージ Xamarin.Forms 2.3.4.247 は netstandard1.4 (.NETStandard,Version=v1.4) と互換性がありません。」がでます。 2015で試している最中です。
AyakoNan

2017/09/03 22:42

この方法で行けそうです。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問