【发布时间】: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