Appcelerator Titanium Facebook 请求不会 return 发送电子邮件
Appcelerator Titanium Facebook request doesn't return email
我正在尝试接收通过 Facebook 登录的用户的电子邮件。我让它在 Android 上工作,但在 iOS 上它 returns 我没有电子邮件的用户数据。
我的代码是:
var viewClick = function() {
fb.logout();
fb.initialize();
fb.authorize();
};
var facebookLogged = function(e) {
Ti.API.info('results From Event: ' + JSON.stringify(e))
fb.requestWithGraphPath("me?fields=name,email,first_name,last_name", {}, 'GET', function(result) {
// fb.requestWithGraphPath("me", { fields: "name,email,first_name,last_name"}, 'GET', function(result) {
Ti.API.info('results From Graph API: ' + JSON.stringify(result))
var data = JSON.parse(result.result);
Ti.API.info("-- email: " + data.email);
});
};
var window = Ti.UI.createWindow({exitOnClose: true, navBarHidden: true, fullscreen: true, orientationModes: [
Ti.UI.PORTRAIT,
Ti.UI.UPSIDE_PORTRAIT,
],
backgroundColor: '#f0f2f2'
});
var fb = require('facebook');
if(Ti.Platform.osname === 'android') {
window.fbProxy = fb.createActivityWorker({lifecycleContainer: window});
}
//fb.setLoginBehavior(fb.LOGIN_BEHAVIOR_NATIVE);
fb.permissions = ['email'];
window.open();
var view = Ti.UI.createView({
height: 200,
width: 200,
backgroundColor: 'red'
});
view.addEventListener('click', viewClick);
window.add(view);
fb.addEventListener('login', facebookLogged);
结果是:
results From Event: {"success":true,"code":0,"data":"{\"firstName\":\"Eren\",\"lastName\":\"Kars\",\"userID\":\"1498651573764560\",\"middleName\":\"\",\"name\":\"Eren Kars\",\"linkURL\":\"https:\/\/www.facebook.com\/app_scoped_user_id\/1498651573764560\/\"}","uid":"1498651573764560","cancelled":false,"bubbles":true,"type":"login","source":{"id":"facebook"},"cancelBubble":false}
results From Graph API: {"result":"{\"id\":\"1498651573764560\",\"last_name\":\"Kars\",\"name\":\"Eren Kars\",\"first_name\":\"Eren\"}","success":true,"path":"me?fields=name,email,first_name,last_name"}
-- email: undefined
configuration/module没有问题因为:
- 我让它在 Android 上工作(returns 电子邮件),
- 登录时工作正常(都在 Android/iOS),
- 它 returns 除了电子邮件之外的所有字段,并且没有给出图表 API 的错误。
在此先感谢您的帮助。
原因是我放了一些 LSApplicationQueriesSchemes 字符串,但似乎我没有添加所有必需的字符串。我添加了所有这些(比 Appcelerator 文档所需的更多),现在它工作正常。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbapi20160328</string>
<string>fbauth</string>
<string>fbauth2</string>
<string>fb-messenger-api20140430</string>
</array>
我正在尝试接收通过 Facebook 登录的用户的电子邮件。我让它在 Android 上工作,但在 iOS 上它 returns 我没有电子邮件的用户数据。
我的代码是:
var viewClick = function() {
fb.logout();
fb.initialize();
fb.authorize();
};
var facebookLogged = function(e) {
Ti.API.info('results From Event: ' + JSON.stringify(e))
fb.requestWithGraphPath("me?fields=name,email,first_name,last_name", {}, 'GET', function(result) {
// fb.requestWithGraphPath("me", { fields: "name,email,first_name,last_name"}, 'GET', function(result) {
Ti.API.info('results From Graph API: ' + JSON.stringify(result))
var data = JSON.parse(result.result);
Ti.API.info("-- email: " + data.email);
});
};
var window = Ti.UI.createWindow({exitOnClose: true, navBarHidden: true, fullscreen: true, orientationModes: [
Ti.UI.PORTRAIT,
Ti.UI.UPSIDE_PORTRAIT,
],
backgroundColor: '#f0f2f2'
});
var fb = require('facebook');
if(Ti.Platform.osname === 'android') {
window.fbProxy = fb.createActivityWorker({lifecycleContainer: window});
}
//fb.setLoginBehavior(fb.LOGIN_BEHAVIOR_NATIVE);
fb.permissions = ['email'];
window.open();
var view = Ti.UI.createView({
height: 200,
width: 200,
backgroundColor: 'red'
});
view.addEventListener('click', viewClick);
window.add(view);
fb.addEventListener('login', facebookLogged);
结果是:
results From Event: {"success":true,"code":0,"data":"{\"firstName\":\"Eren\",\"lastName\":\"Kars\",\"userID\":\"1498651573764560\",\"middleName\":\"\",\"name\":\"Eren Kars\",\"linkURL\":\"https:\/\/www.facebook.com\/app_scoped_user_id\/1498651573764560\/\"}","uid":"1498651573764560","cancelled":false,"bubbles":true,"type":"login","source":{"id":"facebook"},"cancelBubble":false}
results From Graph API: {"result":"{\"id\":\"1498651573764560\",\"last_name\":\"Kars\",\"name\":\"Eren Kars\",\"first_name\":\"Eren\"}","success":true,"path":"me?fields=name,email,first_name,last_name"}
-- email: undefined
configuration/module没有问题因为:
- 我让它在 Android 上工作(returns 电子邮件),
- 登录时工作正常(都在 Android/iOS),
- 它 returns 除了电子邮件之外的所有字段,并且没有给出图表 API 的错误。
在此先感谢您的帮助。
原因是我放了一些 LSApplicationQueriesSchemes 字符串,但似乎我没有添加所有必需的字符串。我添加了所有这些(比 Appcelerator 文档所需的更多),现在它工作正常。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbapi20160328</string>
<string>fbauth</string>
<string>fbauth2</string>
<string>fb-messenger-api20140430</string>
</array>