繁体   English   中英

Firebase 动态链接无法缩短短动态链接

[英]Firebase Dynamic Link Cannot shorten a short Dynamic Link

我在网站上提到了很多问题,但我仍然无法使用 Firebase 动态链接生成短动态链接。

我正在尝试从动态链接生成短动态链接。 生成动态链接后,其工作完美并可共享到任何其他应用程序。 但是不能从那个动态链接生成短链接。

它在 logcat 中显示这样的错误:

com.google.android.gms.common.api.ApiException: 400: Cannot shorten a short Dynamic Link: https://onestickers.page.link/Stickers?sd=Stickers%20for%20WhatsApp%20-%20WAStickerApps&si=https%3A%2F%2Fonestickers.com%2Fimg%2Fmain-logo.png&st=One%20Stickers&amv=11&apn=stickersforwhatsapp.wastickerapps&link=https%3A%2F%2Fapi.wastickerapp.co%3Fpackid%3D201

我正在使用代码创建动态链接:

private void createShareUri(String pid) {
    Uri.Builder builder = new Uri.Builder();
    builder.scheme("https")
            .authority("api.wastickerapp.co")
            .appendQueryParameter("packid", pid);

    DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance()
            .createDynamicLink()
            .setDomainUriPrefix("https://onestickers.page.link/Stickers")
            .setAndroidParameters(new DynamicLink.AndroidParameters.Builder()
                    .setMinimumVersion(11)
                    .build())
            .setSocialMetaTagParameters(
                    new DynamicLink.SocialMetaTagParameters.Builder()
                            .setTitle("One Stickers")
                            .setDescription("Stickers for WhatsApp - WAStickerApps")
                            .setImageUrl(Uri.parse("https://onestickers.com/img/main-logo.png"))
                            .build())
            .setLink(builder.build())
            .buildDynamicLink();
}

这将成功生成动态链接: https : //onestickers.page.link/Stickers?sd=Stickers%20for%20WhatsApp%20-%20WAStickerApps&si=https%3A%2F%2Fonestickers.com%2Fimg%2Fmain-logo.png&st =One%20Stickers&amv=11&apn=stickersforwhatsapp.wastickerapps&link=https%3A%2F%2Fapi.wastickerapp.co%3Fpackid%3D201

如果我将此链接通过 Intent 发送到任何应用程序,它也可以正常工作!

但在那之后我试图生成短链接:

private void createShortDynamicLink(Uri uri) {
    FirebaseDynamicLinks.getInstance()
            .createDynamicLink()
            .setLongLink(uri)
            .buildShortDynamicLink()
            .addOnCompleteListener(this, task -> {
                if (task.isSuccessful()) {
                    Uri shortLink = Objects.requireNonNull(task.getResult()).getShortLink();
                    //Uri flowchartLink = task.getResult().getPreviewLink();
                    Intent intent = new Intent();
                    intent.setAction(Intent.ACTION_SEND);
                    intent.setType("text/plain");
                    intent.putExtra(Intent.EXTRA_SUBJECT, "Stickers Link");
                    intent.putExtra(Intent.EXTRA_TEXT, shortLink.toString());
                    startActivity(intent);
                }
            }).addOnFailureListener(mContext, e -> Log.e("DynamicLink>>>", Log.getStackTraceString(e)));
}

然后它显示 logcat!:

E/DynamicLink>>>: com.google.android.gms.common.api.ApiException: 400: Cannot shorten a short Dynamic Link: https://onestickers.page.link/Stickers?sd=Stickers%20for%20WhatsApp%20-%20WAStickerApps&si=https%3A%2F%2Fonestickers.com%2Fimg%2Fmain-logo.png&st=One%20Stickers&amv=11&apn=stickersforwhatsapp.wastickerapps&link=https%3A%2F%2Fapi.wastickerapp.co%3Fpackid%3D201 [https://firebase.google.com/docs/dynamic-links/rest#create_a_short_link_from_parameters]
    at com.google.android.gms.common.api.internal.TaskUtil.setResultOrApiException(Unknown Source:6)
    at com.google.firebase.dynamiclinks.internal.zzi.zza(Unknown Source:4)
    at com.google.firebase.dynamiclinks.internal.zzn.dispatchTransaction(Unknown Source:10)
    at com.google.android.gms.internal.firebase_dynamic_links.zzb.onTransact(Unknown Source:12)
    at android.os.Binder.execTransact(Binder.java:697)

如果android中还有其他技术,请提出建议。

当您像这样创建长链接时也创建短链接

Uri.Builder builder = new Uri.Builder();
builder.scheme("https")
        .authority("api.wastickerapp.co")
        .appendQueryParameter("packid", pid);

FirebaseDynamicLinks.getInstance().createDynamicLink()
            .setLink(builder.build())
            .setDomainUriPrefix("https://onestickers.page.link/Stickers")
            .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder()
                    .setMinimumVersion(11)
                    .build())
            .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("One Stickers")
                        .setDescription("Stickers for WhatsApp - WAStickerApps")
                        .setImageUrl(Uri.parse("https://onestickers.com/img/main-logo.png"))
                        .build())
            .buildShortDynamicLink()

尝试使用原始网址https://app.page.link/而不是https://app.page.link/ChosenName

在您的情况下,它将是: setDomainUriPrefix("https://onestickers.page.link/") 而不是 setDomainUriPrefix("https://onestickers.page.link/Stickers")

暂无
暂无

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

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