java - 在 android 中集成 Snap-kit

标签 java android snapkit

我正在尝试在我的应用程序中添加 snap-kit,并且我已将所有内容集成为他们的文档。应用程序成功启动 Snapchat 应用程序,但未登录它显示错误 Something is wrong这是我的完整代码和其他实现。这是我关注的官方文档https://kit.snapchat.com/docs/login-kit-android
主要 Activity

public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding binding;
    private static final String TAG = "MAIN_ACTIVITY";
    String query = "{me{bitmoji{avatar},displayName}}";
    String variables = null;
    boolean isUserLoggedIn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

        isUserLoggedIn = SnapLogin.isUserLoggedIn(this);
        if (isUserLoggedIn)
            binding.btnLogin.setText("Logout");
        else
            binding.btnLogin.setText("Logout");
        binding.btnLogin.setOnClickListener(v -> {
            SnapLogin.getAuthTokenManager(this).startTokenGrant();
            binding.progress.setVisibility(View.VISIBLE);
        });
        SnapLogin.getLoginStateController(this).addOnLoginStateChangedListener(mLoginStateChangedListener);
        

        SnapLogin.fetchUserData(this, query, null, new FetchUserDataCallback() {
            @Override
            public void onSuccess(@Nullable UserDataResponse userDataResponse) {
                if (userDataResponse == null || userDataResponse.getData() == null) {
                    return;
                }

                MeData meData = userDataResponse.getData().getMe();
                if (meData == null) {
                    return;
                }

                binding.txtName.setText(userDataResponse.getData().getMe().getDisplayName());

                if (meData.getBitmojiData() != null) {
                    Glide.with(MainActivity.this)
                            .load(meData.getBitmojiData().getAvatar())
                            .into(binding.imgProfile);
                }
            }

            @Override
            public void onFailure(boolean isNetworkError, int statusCode) {

            }
        });
    }

    final LoginStateController.OnLoginStateChangedListener mLoginStateChangedListener =
            new LoginStateController.OnLoginStateChangedListener() {
                @Override
                public void onLoginSucceeded() {
                    // Here you could update UI to show login success
                    binding.progress.setVisibility(View.VISIBLE);
                    Log.d(TAG, "onLoginSucceeded: ");
                    binding.btnLogin.setText("Logout");
                }

                @Override
                public void onLoginFailed() {
                    // Here you could update UI to show login failure
                    binding.progress.setVisibility(View.VISIBLE);
                    Log.d(TAG, "onLoginFailed: ");
                }

                @Override
                public void onLogout() {
                    // Here you could update UI to reflect logged out state
                    binding.progress.setVisibility(View.VISIBLE);
                    Log.d(TAG, "onLogout: ");
                }
            };
}
list
    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.iotait.snapchatandroid">

    <uses-permission android:name="android.permission.INTERNET" />

    <queries>
        <package android:name="com.snapchat.android" />
    </queries>

    <application
        android:name=".application.AppController"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.SnapchatAndroidDemo">

        <meta-data
            android:name="com.snapchat.kit.sdk.clientId"
            android:value="**********************" />
        <meta-data
            android:name="com.snapchat.kit.sdk.redirectUrl"
            android:value="*********************" />
        <meta-data
            android:name="com.snapchat.kit.sdk.scopes"
            android:resource="@array/snap_connect_scopes" />

        <activity android:name=".ui.sign.SigninActivity"
            android:screenOrientation="nosensor"/>
        <activity android:name=".ui.intro.IntroActivity"
            android:screenOrientation="nosensor"/>
        <activity android:name=".ui.login.LoginActivity"
            android:screenOrientation="nosensor"/>
        <activity
            android:name=".ui.splash.SplashActivity"
            android:screenOrientation="nosensor"
            android:theme="@style/Theme.splash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.MainActivity"
            android:screenOrientation="nosensor" />
        <activity
            android:name="com.snapchat.kit.sdk.SnapKitActivity"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="lmk"
                    android:path="/oauth2"
                    android:scheme="lmk" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="preloaded_fonts"
            android:resource="@array/preloaded_fonts" />
    </application>

</manifest>
依赖
implementation([
            'com.snapchat.kit.sdk:login:1.1.4',
            'com.snapchat.kit.sdk:core:1.1.4'
    ])

最佳答案

您需要在应用程序标签中添加这些行

<meta-data android:name="com.snapchat.kit.sdk.clientId" android:value="1aab4ace-3f06-487d-bc85************"/>
    <meta-data android:name="com.snapchat.kit.sdk.redirectUrl" android:value="https:********"/>
    <meta-data android:name="com.snapchat.kit.sdk.scopes" android:resource="@array/snap_connect_scopes"/>
像这样使用
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.iotait.snapchatandroid">

    <uses-permission android:name="android.permission.INTERNET" />

    <queries>
        <package android:name="com.snapchat.android" />
    </queries>

    <application
        android:name=".application.AppController"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.SnapchatAndroidDemo">
<meta-data android:name="com.snapchat.kit.sdk.clientId" android:value="1aab4ace-3f06-487d-bc85************"/>
    <meta-data android:name="com.snapchat.kit.sdk.redirectUrl" android:value="https:********"/>
    <meta-data android:name="com.snapchat.kit.sdk.scopes" android:resource="@array/snap_connect_scopes"/>
        <activity android:name=".intro.IntroActivity"/>
        <activity android:name=".login.LoginActivity"/>
        <activity
            android:name=".splash.SplashActivity"
            android:theme="@style/Theme.splash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity" />

        <activity
            android:name="com.snapchat.kit.sdk.SnapKitActivity"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="lmk" android:host="lmk" android:path="/oauth2"/>
            </intent-filter>

        </activity>

        <meta-data
            android:name="preloaded_fonts"
            android:resource="@array/preloaded_fonts" />


    </application>

</manifest>

关于java - 在 android 中集成 Snap-kit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66202846/

相关文章:

android - 如何将Firebase和Snap Creative Kit作为Gradle依赖项包括在内

java - 同时从两个不同线程插入/更新实体

java - 主线程运行顺序

java - 使用ArrayList作为Java函数调用

ios - 如何将 UIView 高度设置为等于两个 subview UILabel 的最大值?

java - 在 Android 中使用 firestore 仅使用用户名和密码进行身份验证

android - 如何在编辑 TextView 中显示当前日期

java - 如何使用 Mockito 验证对接口(interface)的调用?

android - 启动器 Activity 和应用程序名称是否可以有不同的标签名称