【问题标题】:Unable to setup Twitter auth for React Native app. Error: Unconfirmed callback无法为 React Native 应用程序设置 Twitter 身份验证。错误:未确认的回调
【发布时间】:2018-12-19 01:19:11
【问题描述】:

我对 Twitter 的回调有疑问。

我有 React Native 跨平台应用程序。现在我正在设置 Android 的部分。需要进行一些操作来设置 Twitter Auth。其中之一是设置回调 url。

我在他们的网站中有 Twitter 应用程序,名为 SunyaInnov 。我已经生成了消费者密钥(正如预期的那样)。在那里设置回调 url 到https://www.google.com

在应用内我有这个:

-AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.foodilog"
android:versionCode="1"
android:versionName="1.0">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="22" />

<application
  android:name=".MainApplication"
  android:allowBackup="true"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:largeHeap="true"
  android:theme="@style/AppTheme">
  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
    </intent-filter>
      <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="foodilog" />
      </intent-filter>
  </activity>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
  <meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id"/>
  <meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="**************************"/>
</application>

</manifest>

-login.js回调调用的文件:

import React, { Component } from 'react';
import {
    StyleSheet,
    View,
    Text,
    Image,
    Button,
    TouchableOpacity,
    Navigator,
    Dimensions,
    DeviceEventEmitter,
    NativeModules,
    requireNativeComponent,
    Platform,
    AsyncStorage,
    Linking,
    ActivityIndicator
} from 'react-native';
import CheckBox from 'react-native-icon-checkbox';
import { twitter } from 'react-native-simple-auth'
export default class LoginPage extends Component {
    constructor(props) {
        super(props);
        this.state = {
            agree: false,
            isLoading: true
        };
    }
_twitterSignIn() {
    if (this.state.agree) {`console.log("trying to auth with twitter")
        twitter({
          appId: API.TWITTER_CONSUMER_KEY,
          appSecret: API.TWITTER_CONSUMER_SECRET,
          callback: 'foodilog://authorize',
        }).then((info) => {
        console.log(info)
        const { authToken, authTokenSecret } = info;
          if (authToken && authTokenSecret) {
            AsyncStorage.setItem('CurrentSocialLogin', 'twitter');
            AsyncStorage.setItem('FoodilogTwitterToken', authToken);
            AsyncStorage.setItem('FoodilogTwitterTokenSecret', authTokenSecret);
            this.dispatchLogin(API.TWITTER_LOGIN_URL, authToken, authTokenSecret);
          }
          // info.user - user details from the provider
          // info.credentials - tokens from the provider
        }).catch((error) => {
            console.log(error)
          // error.code
          // error.description
        });
}

它只是 JavaScript 文件的一部分,与 twitter 登录有关。

显示给我的问题是:

错误:未确认的回调。

我怎样才能知道如何设置回调?回调中的协议位置和主机位置必须是什么。

另请注意:我使用 react-native-simple-auth 包通过 twitter 进行身份验证(我认为这是最简单的身份验证方法并且有任何必要)。如果您对此有任何决定,也请告诉我。

【问题讨论】:

  • 我使用github.com/fullstackreact/react-native-oauth 使用推特登录。效果很好。
  • @hannanessay bt 我应该在里面粘贴什么应用程序名称...我知道 react-native-oauth... 有一个名为 const manager = new OAuthManager('{what I should paste here}') 的方法用于 twitter auth?上面 twitter 应用程序菜单中的名称(Big'n'Bold Literals)是 SunyaInnov
  • 是的,应该是你在apps.twitter.com注册时创建的名字(截图:cdn.pbrd.co/images/HtVOyP9.png
  • @hannanessay 感谢您现在帮助我)我至少有这个未回答的问题。在回调 url 方案中的清单活动中,我应该只粘贴我的 twitter 应用程序的小写名称(例如“sunyainnov”)?所以最后一个......在 react-native 组件内部很容易添加带有以下参数(“synuainnov”)的新 OAuthManager ......或者其他/附加到设置 cb url?不需要在两个文件中为名称添加后缀或前缀?
  • @hannanessay ,另外,你知道如何在 react-native 代码中正确导入这个包。要导入什么?因为这里在 react-native-oauth 指南中没有说明在 js 代码中导入什么以及如何导入。

标签: javascript android reactjs react-native twitter


【解决方案1】:

你指的是推特的设置吗? // 不要使用 localhost 作为回调 URL 请不要使用本地主机,而是在本地使用自定义主机或 http(s)://127.0.0.1。

如果您使用 Twitter 工具包,请务必添加这些 如果您使用 iOS 或 Android 版 Twitter Kit,则必须使用以下回调 URL:

Android - twittersdk:// iOS - twitterkit-CONSUMERKEY://

我推荐你使用 react-native-twitter-signin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2018-06-19
    • 2013-03-08
    • 2011-08-04
    • 2011-10-26
    • 1970-01-01
    • 2012-08-25
    • 2015-06-10
    相关资源
    最近更新 更多