繁体   English   中英

Azure移动服务本机android登录

[英]Azure Mobile Services native android login

我在Azure移动服务上运行一个Easy API和一个Easy Table。 这两个都要求访问身份验证。 我还设置了Google身份验证。 现在,当我尝试使用android应用程序连接到移动服务时,我获得了Google登录页面的WebView,而我已经在启动该应用程序时对用户进行了身份验证。 我遵循以下指南在android上设置身份验证,并测试将单个对象发布到表中。

https://azure.microsoft.com/en-in/documentation/articles/mobile-services-android-how-to-use-client-library/#authentication

这是我的身份验证和表添加代码。 使用此WebView登录后,数据也不会插入表中。 它会静默失败,没有任何错误或警告。

创建客户端。 Azure门户上没有提供API密钥,我在这里读到现在不需要。 但是SDK并未对此进行更新,因此我传递了一个空字符串。

try {
    mClient = new MobileServiceClient(
            "https://memoriesapp.azurewebsites.net",
            "",  
            this
    );
} catch (MalformedURLException e) {
    e.printStackTrace();
}


final MobileServiceTable<Trip> mTripTable = mClient.getTable(Trip.class);
// Login using the Google provider.

ListenableFuture<MobileServiceUser> mLogin = mClient.login(MobileServiceAuthenticationProvider.Google);

Futures.addCallback(mLogin, new FutureCallback<MobileServiceUser>() {
    @Override
    public void onFailure(Throwable exc) {

    }

    @Override
    public void onSuccess(MobileServiceUser user) {
        Snackbar.make(findViewById(R.id.new_trip_layout),String.format(
                "You are now logged in - %1$2s",
                user.getUserId()), Snackbar.LENGTH_LONG);
    }
});

new AsyncTask<Void, Void, Void>() {

    @Override
    protected Void doInBackground(Void... params) {
        try {
            mTripTable.insert(trip1).get();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        return null;
    }
}.execute();

这是我参加该活动时得到的:

Imgur

听起来您正在将Azure App Service与Azure移动服务进行混合和匹配。

移动服务确实需要API密钥。 App Services不提供。

您正在指向移动服务的文档-如果您正在阅读该教程,则需要添加API密钥。 如果您不这样做,则后端将返回401未经授权,并且您很可能会被重定向到登录页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM